我正在尋找一種方法來否定用於過濾IQueryable
序列的表達式。C#否定表達式
所以,我有這樣的:
Expression<Func<T, bool>> expression = (x => true);
現在我想創建這將導致產生(x => false)
表達 - 所以我基本上要否定expression
。
工作方法,我發現自己是這樣的:
var negatedExpression =
Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
expression.Parameters[0])));
但我幾乎可以肯定有一個更好的方式 - 你能幫助我嗎?(可能是Not(expression)
)。
那麼,我知道如何包裝我的方式來否定一個'Not'方法的聲明,但我實際上是在尋求一種簡單的方法來實際執行否定*(它確實在我看來,調用'Expression.Lambda。 Blablabla'是一個巨大的矯枉過正)* – 2010-12-11 16:19:37
表達式樹是不可變的,所以你必須創建一個新的lambda。 – 2010-12-11 16:31:49