Linq: создать логическое обратное выражение
Я хотел бы создать метод, который принимаетExpression<Func<T, bool>>
и создает логическую инверсию этого (то есть он вернетfalse
куда бы он вернулсяtrue
, и наоборот. Это намного сложнее, чем я думал. Это где я до:
public static Expression<Func<T, bool>> Not<T>(this Expression<Func<T, bool>> expression)
{
return Expression.Lambda<Func<T, bool>>(Expression.Not(expression.Body));
}
Это прекрасно компилируется, но при вызове выдает следующее исключение:
Test method Tests.Common.Unit.LinqPredicateBuilderTests.CanInverseAPredicate threw exception:
System.ArgumentException: Incorrect number of parameters supplied for lambda declaration
Я не имею понятия что я делаю. Может ли кто-нибудь заполнить пробелы?