我正在嘗試使用動態Linq(ScottGu發佈的)來做GroupBy(lambda表達式)。我有一個對象。我正在做AsQueryable。這是我有..類型參數不能從使用推斷,任何人都可以幫忙嗎?
var result = Items.AsQueryable().GroupBy("DeliveryDate");
但它給了我一個錯誤說,參數不能從使用推斷。我認爲它沒有看到正確的OrderBy。
項目是List<Stock>
。
我嘗試添加<>到GroupBy
但我想我需要通過多個項目。我有點困惑。
我傳入的字段(通過字符串)可以是任何類型,在本例中它是DateTime。
如果我做我的標準LINQ它確實工作。即:
var result = Items.AsQueryable().GroupBy(x => x.DeliveryDate);
這裏是擴展方法(從ScottGu):
public static IQueryable GroupBy(this IQueryable source, string keySelector, string elementSelector, params object[] values) {
if (source == null) throw new ArgumentNullException("source");
if (keySelector == null) throw new ArgumentNullException("keySelector");
if (elementSelector == null) throw new ArgumentNullException("elementSelector");
LambdaExpression keyLambda = DynamicExpression.ParseLambda(source.ElementType, null, keySelector, values);
LambdaExpression elementLambda = DynamicExpression.ParseLambda(source.ElementType, null, elementSelector, values);
return source.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "GroupBy",
new Type[] { source.ElementType, keyLambda.Body.Type, elementLambda.Body.Type },
source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda)));
}
項目using System.Linq.Dynamic;
我已在使用 - 我在另一種方法使用動態OrderBy
,所以我知道它應該能夠看到它。
我有點困惑,它似乎使用動態LINQ它不明白我用什麼對象。
另請參見[我在CP上的文章](http://www.codeproject.com/KB/webforms/HandleGridViewOnSorting.aspx)獲取另一個但類似解決方案的相同問題 – abatishchev