最近我一直在使用 PredicateBuilder 类(如图所示)来帮助生成表达式树。提供的 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>())));
}
有什么想法吗?
注意