我有一个动态构建的表达式,我想应用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)));