Mam metodę że chcę użyć, aby posortować listę:Nie można znaleźć OrderBy na Queryable za pomocą "dostarczonych argumentów".
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);
}
uzyskać wyjątek, kiedy wykonać kod stosując następujące argumenty:
var myPreExistingQuery = new List<SomeType>{ new SomeType() }.AsQueryable();
var query = BuildQuery(myPreExistingQuery, "OrderBy", x => x.SomeProperty);
Wyjątkiem jest:
No method 'OrderBy' on type 'System.Linq.Queryable' is compatible with the supplied arguments.
Czy ktoś może zobaczyć, czego tu brakuje?
EDIT:
Próbowałem innego przeciążenie Expression.Call() i dostał ten sam ten sam wyjątek:
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);
}
czy możesz pokazać mi konstrukcję 'myPreExistingQuery' proszę? – Femaref
Dodałem go powyżej wywołania metody. –