Ich folge diesem SO answer, um Lambda-Ausdrücke in partielle SQL-Syntax zu konvertieren.Erstellen eines Ausdrucksbaums für Enthält <T>
Ich habe jedoch Probleme beim Analysieren des Ausdrucks für Contains
. Ich habe eine Methode:
private bool ParseContainsExpression(MethodCallExpression expression)
{
MemberExpression member = (MemberExpression)expression.Arguments[0];
var methodInfo = typeof(List<int>).GetMethod("Contains", new Type[] { typeof(int) });
//TODO check if list contains value
return false;
}
Als ich Ausdrücke völlig neu bin, ich weiß nicht, woher der Name der Eigenschaft erhalten und Wert, und die Liste, die die Werte enthält, möchte ich gegen überprüfen. Wo sind diese Eigenschaften und Werte im Ausdruck gespeichert?
Ja, ich bin mit der vollständigen Umsetzung Besucher wie in der verknüpften Antwort beschrieben, aber ich mag 'Contains', um es auch zu addieren. –
Rob sagt, dass Sie keine Reflexion brauchen, Sie müssen nur die Liste und den Kandidaten aus dem Ausdruck holen und dann enthält der Aufruf direkt auf der Liste. – briantyler
In dem Namespace finde ich 'Dump()' –