2011-03-09 31 views
0

Linq newb闹钟会响起很响,也可能是一般的新闹钟,但我不得不问这个问题,因为这会让我疯狂。我有一个MyObject对象,它有一些属性,例如身份证号。还有比2更多的属性,但你明白了。Linq和动态对象属性在选择帮助

我有这些对象的泛型列表。从这个列表中我需要根据MyObject的动态设置属性来生成项目的子集。因此,而不必

Dim lst as New List(Of MyObject) 
... code to populate list ... 
Dim newlist = (From o In lst Select o.Number Distinct).ToList() 

我想有东西,让我来动态查询对象的属性中选择,如

Dim lst as New List(Of MyObject) 
... code to populate list ... 
Dim newlist = (From o In lst Select o.GetType().GetProperty("Number").Name Distinct).ToList() 

显然,上述操作无法正常工作它只是返回属性名称的单个项目列表。是否有一种相对简单的方法来在Linq语句中动态选择对象属性?

任何和所有帮助,将不胜感激。 谢谢!

回答

1

试试这个:

o.GetType().GetProperty("Number").GetValue(o) 

...在你的SELECT子句。

+0

顺便说一句你的解决方案(和我的编辑你的解决方案)确实使用反射,而且很可能不是最好的方法来做到这一点。 – 2011-03-09 22:41:24

+0

这很好,谢谢。我同意反思可能不是这里的方式,使用linq表达会更好。但我需要快速调整它,看起来像用表情包裹我的头会花费我比我有更多的时间。 – bcarroll2k3 2011-03-10 16:14:42