最近我一直在使用PredicateBuilder类(shown here)来帮助生成表达式树。提供的True,And和Or方法运行良好。但是,我还想使用Not方法,到目前为止,我尝试使用了一个错误
Incorrect number of parameters supplied for lambda declaration.
以下是尝试:
public static Expression<Func<T, bool>> Not<T>(this Expression<Func<T, bool>> expr)
{
return Expression.Lambda<Func<T, bool>>
(Expression.Not(Expression.Invoke(expr, expr.Parameters.Cast<Expression>())));
}
有什么想法?
NB
答案 0 :(得分:1)
public static Expression<Func<T, bool>> Not<T>(this Expression<Func<T, bool>> expr)
{
return Expression.Lambda<Func<T, bool>>
(Expression.Not(Expression.Invoke(expr, expr.Parameters.Cast<Expression>())), expr.Parameters);
}