Gibt es in Linq eine Methode, mit der Sie SQL-Zeichenfolgen wie "... wo (a = 1) ODER (a = 2)" erstellen können?
.net
linq
where-clause
dstr
quelle
quelle
||
etwas Dynamisches benutzt und wollena=a.where(hour=> hour<20); if(weekend) a=a.where(hour=> hour>6);
. Vielleicht möchten Sie das klarerAntworten:
Sie können dies sicherlich innerhalb einer Where-Klausel (Erweiterungsmethode) tun. Wenn Sie jedoch eine komplexe Abfrage dynamisch erstellen müssen, können Sie einen PredicateBuilder verwenden .
Oder mit einem PredicateBuilder
quelle
Sie können die standardmäßigen booleschen .NET-Operatoren in Ihrer einzelnen where-Klausel verwenden:
quelle
Sie verwenden dieselben Operatoren wie in normalem C # ===> || für "oder" && für "und" etc.
quelle
.Where()
Verwenden Sie in Ihrem Anruf den Standard-Booleschen Operator 'Oder'||
.Der Where-Aufruf ist lediglich ein boolescher Vergleich für alles, was Sie möchten, sodass Sie ihn mit so viel bedingter Logik füllen können, wie Sie möchten.
quelle
Wenn Sie die Anzahl der Parameter nicht kennen, können Sie Folgendes verwenden:
Beispieldaten
Code
quelle
Dies ist jetzt in .net integriert, nicht sicher, ob es vorher nicht war. Bei einer vorhandenen Linq-Abfrage können Sie eine where-Klausel hinzufügen, die ein Array von Zeichenfolgen (SearchStrings) enthält, und prüfen, ob eine dieser Zeichenfolgen mit dem Objekt in der Sammlung übereinstimmt, nach der Sie suchen. Durch die Verwendung von ToLower () wird lediglich sichergestellt, dass bei SQL-Abfragen die Groß- und Kleinschreibung nicht berücksichtigt wird.
Sie können dasselbe für ein 'und' Prädikat tun, indem Sie alle Wörter im Array mit dem Objekt der Sammlung abgleichen.
In diesem Beispiel korreliert i mit jedem Objekt in einer Sammlung und s mit jeder Zeichenfolge im SearchStrings-Array.
quelle