Ich möchte ein String-Array von Bedingungen vom Client wie field == value
akzeptieren.
Es wäre wirklich nett, ein Spezifikationsobjekt zu erstellen, das die Zeichenfolge im Konstruktor akzeptieren und einen Lambda-Ausdruck ausgeben könnte, um die Where-Klausel darzustellen. Zum Beispiel könnte ich Folgendes tun:
Wie können Sie "name == Jujyfruits"
in DB.Products.Where(p => p.name == "JujyFruits")
umwandeln?
Sie können
verwendenProduct.name
aus der Zeichenfolge name
und Expression
, um manuell einen Lambda-Ausdruck zu erstellen. Beachten Sie, dass das folgende Codebeispiel nur für Equals (==)
-Operationen funktioniert. Es ist jedoch leicht, auch auf andere Operationen zu verallgemeinern (auf Leerzeichen aufteilen, den Operator analysieren und den entsprechenden Ausdruck anstelle von Expression.Equal
wählen).
Über die Konstruktor-Sache: Da Func<T, TResult>
versiegelt ist, kann man nicht davon ableiten. Sie können jedoch einen impliziten Konvertierungsoperator erstellen, der Specification<T>
in Func<T, bool>
. <Übersetzt / p>
Sie müssen Ihren Suchbegriff in ein Prädikat umwandeln. Versuchen Sie etwas wie folgt:
%Vor%Tags und Links c# entity-framework-4 c#-4.0