Richard Friend
Richard Friend

Reputation: 16018

how to 'not' a lambda expression for entity framework

Given the following

Expression<Func<T,bool>> matchExpression;

How can i create another expression that is a 'not' of the existing one.

i have tried

Expression<Func<T, bool>> func3 = (i) => !matchExpression.Invoke(i);

but this is not supported by the entity framework...

Regards

Upvotes: 9

Views: 975

Answers (1)

Jb Evain
Jb Evain

Reputation: 17499

You have to recreate a new lambda, and negate the body of the original one:

Expression<Func<T, bool>> not = Expression.Lambda<Func<T, bool>> (
    Expression.Not (matchExpression.Body),
    matchExpression.Parameters [0]);

Upvotes: 10

Related Questions