我有,我想用排序列表的方法:使用「提供的參數」在Queryable上找不到OrderBy。
var myPreExistingQuery = new List<SomeType>{ new SomeType() }.AsQueryable();
var query = BuildQuery(myPreExistingQuery, "OrderBy", x => x.SomeProperty);
唯一的例外是:
private static IQueryable<T> BuildQuery<T>(IQueryable<T> query,
string methodName,
Expression<Func<T, object>> property)
{
var typeArgs = new[] { query.ElementType, property.Body.Type };
methodCall = Expression.Call(typeof (Queryable),
methodName,
typeArgs,
query.Expression,
property);
return query.Provider.CreateQuery<T>(methodCall);
}
我得到一個異常,當我使用以下ARGS執行代碼
No method 'OrderBy' on type 'System.Linq.Queryable' is compatible with the supplied arguments.
任何人都可以看到我在這裏失蹤?
編輯:
我試圖Expression.Call的另一個重載(),並得到了相同的相同的異常:
private static IQueryable<T> BuildQuery<T>(IQueryable<T> query, string methodName, Expression<Func<T, object>> propertyExpression)
{
var methodCall = Expression.Call(query.Expression,
methodName,
new[] {query.ElementType, property.Body.Type},
new[] {propertyExpression});
return query.Provider.CreateQuery<T>(methodCall);
}
你能告訴我'myPreExistingQuery'的結構嗎? – Femaref
我在方法調用上面添加了它。 –