Ich suche nach einer Möglichkeit, einen Ausdruck zu negieren, der zum Filtern von IQueryable
Sequenzen verwendet wird.C# Negieren eines Ausdrucks
Also, ich habe so etwas wie:
Expression<Func<T, bool>> expression = (x => true);
Nun wünsche ich den Ausdruck zu schaffen, die in Nachgeben (x => false)
führen würde - also im Grunde negieren ich die expression
wollen.
Die Arbeitsweise ich gefunden habe, funktioniert selbst wie folgt aus:
var negatedExpression =
Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
expression.Parameters[0])));
Aber ich bin fast sicher, dass es einen besseren Weg - ihr mir helfen könntet? (etwas wie Not(expression)
, wahrscheinlich).
Nun, ich weiß, wie ich meine Aussage in eine "Nicht" -Methode umwandeln kann, aber ich suchte eigentlich nach einer einfachen Möglichkeit, die Negation tatsächlich auszuführen * (es sieht für mich so aus, dass ich 'Expression.Lambda. Blablabla ist ein riesiger Overkill. * –
Expression Trees sind unveränderbar, also müssen Sie ein neues Lambda erstellen. –