将order by应用于表达式树

时间:2014-03-22 01:17:13

标签: c# asp.net-mvc-4 expression-trees

我有一个动态构建的表达式,我想应用OrderBy方法,但我正在努力解决这个问题。

我有一个方法,它应该将order子句附加到我预先存在的表达式,但是一旦我尝试构建一个Expression.Call,它就会抛出一个运行时错误,表明Queryable类型没有OrderBy方法

到目前为止,这是我的代码:

Type type = typeof(T);
PropertyInfo property = type.GetProperty(sorts[counter].Member);
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderExpression = Expression.Lambda(propertyAccess, parameter);
expression = Expression.And(
    expression,
    Expression.Call(
        typeof(Queryable),
        "OrderBy",
        new Type[] { typeof(P), property.PropertyType },
        null,
        Expression.Quote(orderExpression)));

0 个答案:

没有答案