Я ищу способ отрицать выражение, используемое для фильтрации 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)
, вероятно).
Ну, я действительно знаю, как обернуть свой путь, чтобы отрицать утверждение в методе «Не», но я действительно искал простой способ фактически выполнить отрицание * (мне кажется, что он вызывает выражение Expression.Lambda. Blablabla' - огромный перебор). * –
Выражение Деревья неизменны, поэтому вам нужно создать новую лямбду. –