C # отрицает выражение

Я ищу способ отрицать выражение, используемое для фильтрации последовательностей IQueryable .

Итак, у меня есть что-то вроде:

Expression<Func<T, bool>> expression = (x => true);

Теперь я хочу создать выражение, результатом которого будет (x => false) - поэтому я в основном хочу отрицать выражение .

Рабочий метод, который я обнаружил, работает вот так:

var negatedExpression = 
   Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
                                     expression.Parameters[0])));

Но я почти уверен, что есть способ получше - не могли бы вы мне помочь? (что-то вроде Not (выражение) , вероятно).

21
задан Jb Evain 11 December 2010 в 16:30
поделиться