2011-03-09 62 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