Ich habe ein Szenario, in dem ich benutzerdefinierte Spaltennamen, assoziierte Operatoren wie & lt; & gt; = zwischen usw. und dann ein Wert zugeordnet.
Ich versuche herauszufinden, ob es möglich ist, eine LINQ-Abfrage mit einer dynamischen (string) where-Klausel aufzubauen?
Ich habe die Predicate.OR Preditcate.AND Sachen bemerkt, aber das ist nicht ganz das, worüber ich rede.
Irgendwelche Vorschläge?
Wenn Sie über eine Zeichenfolge Where
-Klausel sprechen (anstatt den Ausdruck selbst zu erstellen) - dann Dynamische LINQ-Bibliothek (in den 3,5 Proben, IIRC) sollte ausreichen.
Beachten Sie, dass das folgende Beispiel für die Datenbanknutzung gilt; Sie können es jedoch mit LINQ-to-Objects verwenden, indem Sie .AsQueryable()
für Ihre speicherinternen Daten aufrufen.
alt text http://www.scottgu.com/blogposts/dynquery/step2.png
Tatsächlich gibt es eine bestimmte Bibliothek von Microsoft ( System.Linq.Dynamic ), die mit den C # VS2008-Beispielen geliefert wird, die dies unterstützen. Holen Sie es von hier (Microsoft Download)
Die Bibliothek ist im Verzeichnis \ LinqSamples \ DynamicQuery der Beispiele des obigen Downloads enthalten.
Für umfangreiche Anwendungsbeispiele, lesen Sie diese Seite: Ссылка