Не могу найти OrderBy в Queryable с «предоставленными аргументами».

У меня есть метод, который я хочу использовать для сортировки списка:

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.

Может ли кто-нибудь увидеть, что я здесь не хватает?

РЕДАКТИРОВАТЬ:

Я попробовал другую перегрузку 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);
    }
8
задан Byron Sommardahl 31 July 2011 в 22:48
поделиться