2012-12-04 21 views
1

最近我一直在使用PredicateBuilder類(shown here)來幫助生成表達式樹。提供的True,And和Or方法工作正常。不過,我也想用一個不是方法,到目前爲止,我在一個試圖得到我的錯誤如何製作PredicateBuilder不是

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

回答

1

Oop,就是這樣。我沒有給參數外的λ功能:

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); 
    } 
+1

就像留言說... – usr