私は、リストをソートするために使用する方法があります:私は、次の引数を使用してコードを実行したときに、私は例外を取得"提供された引数"を使用してQueryByでOrderByを見つけることができません。
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);
}
を:
var myPreExistingQuery = new List<SomeType>{ new SomeType() }.AsQueryable();
var query = BuildQuery(myPreExistingQuery, "OrderBy", x => x.SomeProperty);
例外は次のとおりです。
No method 'OrderBy' on type 'System.Linq.Queryable' is compatible with the supplied arguments.
私はここで何が欠けているのを誰に見せてもらえますか?
EDIT:
は私が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
メソッド呼び出しの上に追加しました。 –