Ich habe so etwas wieVon Binary zu Expression <Func <T, bool>>
AngenommenExpression<Func<SomeType, DateTime>> left = x => x.SomeDateProperty;
Expression<Func<SomeType, DateTime>> right = x => dateTimeConstant;
var binaryExpression = Expression.GreaterThan(left, right);
Expression<Func<SomeType, bool>> predicate =
x => x.SomeDateProperty> dateTimeConstant;
1) Wie kann ich die rechte Hand der Zuordnung der letzten Zeile mit etwas ersetzen, das die binaryExpression
verwendet stattdessen? var predicate = x => binaryExpression;
funktioniert nicht.
2) Die right
ist immer eine Konstante, nicht unbedingt DateTime.Now. Könnte es einfacher sein als Expression
? Zum Beispiel hängt es nicht von SomeType ab, es ist nur eine Konstante.
3) Wenn ich die GreaterThan
als string
habe, gibt es eine Möglichkeit, von dieser Zeichenfolge auf die Methode mit dem gleichen Namen in Expression
zu erhalten? Wenn der Name der Vergleichsmethode als string
angegeben wird, wie kann ich in der Expression
-Klasse allgemein von der Zeichenfolge zu dem Aufrufen der Methode mit dem gleichen Name gehen?
Es muss mit LINQ zu Entities arbeiten, wenn es darauf ankommt.
Sie können Expression-Bäume mithilfe der ExpressionVisitor-Klasse ändern. – Steven