我想弄清楚如何在linq查詢中動態指定我的select子句的屬性。如何在Linq中執行動態選擇?
可以說我有一個員工對象的集合。在運行時,最終用戶將指定他們希望爲這些員工看到的屬性,所以我需要能夠動態構建我的Linq select子句。
我已經使用了動態Linq庫,但我不喜歡使用它,因爲它需要我建立一個字符串傳遞給select方法。我想了解如何通過表達式來完成此操作。
我想弄清楚如何在linq查詢中動態指定我的select子句的屬性。如何在Linq中執行動態選擇?
可以說我有一個員工對象的集合。在運行時,最終用戶將指定他們希望爲這些員工看到的屬性,所以我需要能夠動態構建我的Linq select子句。
我已經使用了動態Linq庫,但我不喜歡使用它,因爲它需要我建立一個字符串傳遞給select方法。我想了解如何通過表達式來完成此操作。
This看起來像一些更符合您的要求,不使用動態LINQ。
使用反射來獲取動態列值
//列變量列名作爲逗號分隔字符串,你可以 在DB //例如字符串列保存=「姓名,身份證,年齡」;
var strColumns =columns.split(,);
foreach(var myObject in MyObjectcollection)
{
for(int index =0;index<strColumns.count();index++)
{
//Create a collection of objects
mycollection.add(myObject.GetType().GetProperty(strColumns[index]).GetValue(myObject, null));
}
}
你爲什麼不選擇Employee對象的所有屬性,並只顯示用戶已選擇的呢?如果您選擇某個DB行的幾列或全部列(通常可能不包括某些大列),則通常沒有多大區別。 – PeterFromCologne 2010-05-19 22:14:16
查看[Scott Gu的博客](http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx )。它將解釋如何做到這一點。 – mcass20 2010-05-19 19:26:22