2010-05-19 43 views
2

我想弄清楚如何在linq查詢中動態指定我的select子句的屬性。如何在Linq中執行動態選擇?

可以說我有一個員工對象的集合。在運行時,最終用戶將指定他們希望爲這些員工看到的屬性,所以我需要能夠動態構建我的Linq select子句。

我已經使用了動態Linq庫,但我不喜歡使用它,因爲它需要我建立一個字符串傳遞給select方法。我想了解如何通過表達式來完成此操作。

+0

你爲什麼不選擇Employee對象的所有屬性,並只顯示用戶已選擇的呢?如果您選擇某個DB行的幾列或全部列(通常可能不包括某些大列),則通常沒有多大區別。 – PeterFromCologne 2010-05-19 22:14:16

+0

查看[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

回答

0

This看起來像一些更符合您的要求,不使用動態LINQ。

0

使用反射來獲取動態列值

//列變量列名作爲逗號分隔字符串,你可以 在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)); 
    } 
    }