【发布时间】:2010-11-10 07:53:09
【问题描述】:
我有一个层次集合对象,我试图在 Linq 中检索最后一级对象的属性。我不想为每个属性编写一个 get 方法。不知道如何通过选择器来实现
Class Test {
public int ID { get; set; }
public int PopertyA { get; set; }
public string PopertyB { get; set; }
...Many more properties
}
public static TResult GetTest(hierarchyObject, int ID, Func<TSource, TResult> selector)
{
return (from level1 in hierarchyObject.Level1
from test in level1.Test
where test.ID.Equals(ID)
select selector).First();
}
这很有效。目前我已经制作了返回测试对象并访问调用方法中的属性的方法。但想知道我是否可以实现通用属性获取器。
编辑:
Class Hierarcy{
public IList<Level1> level1;
}
Class Level1 {
public IList<Test> test;
}
给定一个层次对象和 test.ID,我想检索 Test 的任何属性。
【问题讨论】:
-
我已经读了 5 遍了,仍然不明白你在做什么......
-
您没有提供足够的详细信息。你的“层次结构”是如何组织的?
Level1的类型是什么?如果有一个名为Level2或Level3的子属性,那是什么类型? “最后一级”是什么意思? -
hierarchyObject 有一个 Level1 的集合,其中有一个 Test 的集合
-
为什么在where子句中使用
Test.ID.Equals(ID)(Test的类成员),而不是test.ID.Equals(ID)(局部变量test的实例成员)? -
抱歉,打错字了,应该是 test.ID.Equals(ID)