2009-08-19 66 views
2

我想在運行時建立一個LINQ查詢,以便只選擇某些屬性。我曾經想過通過追加額外的.Select()調用來構建查詢,或者使用動態LINQ擴展來傳遞一列字符串(希望遠離構建字符串的查詢) 。然而,我目前的嘗試找到解決方案並沒有奏效。建立哪些屬性與LINQ選擇對象

+0

你能詳細一點嗎?你是否想讓用戶通過他們想要的字段? – 2009-08-19 14:38:04

+0

用戶確切地選擇他們想要的信息。 – jwarzech 2009-08-19 14:39:21

+0

是LINQ的一個要求嗎?我認爲不知道你的對象將會有哪些字段會使查詢的結果難以編碼。也許回到數據集的日子會更適合? – 2009-08-19 14:43:46

回答

1

您需要查看linq表達式。這裏有一個小例子,它應該用於選擇一個屬性,選擇更多的屬性會變得更加困難,但是如果使用您選擇的屬性定義一個類型,通常是可行的(例如,不要在查詢中使用匿名類型正在生成)。

using System.Linq.Expressions; 
... 


IQueryable<T> query = someQuery; 
Expression expression = query.Expression; 

ParameterExpression obj = Expression.Parameter(query.ElementType, "obj"); 
MemberExpression property = Expression.PropertyOrField(obj, propertyName); 
Expression<Func<T,bool>> lambda = Expression.Lambda<Func<T,bool>>(property, obj); 
query = query.Where(lambda); 

至少,那是一般的想法

+0

你可能是對的,現在是時候瞭解LINQ表達式樹的工作原理了。 – jwarzech 2009-08-19 15:08:24

0

賈斯汀評論,您的難度也會找到一個類型返回。 LINQ的優點是你有強類型的實體可以使用。如果這些不利於你的利益,或者你發現自己對穀物做了很多工作,那麼可能有更好的解決方案。