首先,您需要更改方法签名:
private static IQueryable<Role> RestrictByProp(IQueryable<Role> query,
Expression<Func<Role, int>> selector)
这意味着lambda表达式将转换为表达式树而不是委托。
然后你需要建立一个
Expression<Func<Role, bool>>
从现有表达式树。
它会看起来
某物
这样地:
LambdaExpression lambda = (LambdaExpression) selector;
var predicate = Expression.Equal(selector, Expression.Constant(1));
var lambdaPredicate = Expression.Lambda<Func<Role, bool>>(predicate,
lambda.Parameters);
return query.Where(lambdaPredicate);