LINQ-Äquivalent der „IN“-Anweisung von SQL
In diesem Artikel befassen wir uns mit der Aufgabe, eine LINQ-Abfrage zu schreiben, die die emuliert Verhalten der SQL-Anweisung „IN“. Diese Abfrage ruft Elemente ab, die einer angegebenen Liste von Tags entsprechen.
Stellen Sie sich das folgende Datenbankschema vor, das Elemente unterstützt Tagging:
Artikel
Tag s
TagMap
Problem Anweisung:
Schreiben Sie eine LINQ-Abfrage, die Elemente zurückgibt, die einer angegebenen Liste von Tags entsprechen. Wenn die gewünschten Tags beispielsweise 2, 3, 4 und 7 sind, sollte die Abfrage Elemente mit diesen Tags abrufen.
Lösung:
Dies können wir wie folgt erreichen LINQ-Abfrage:
var TagIds = new[] { 2, 3, 4, 7 }; var q = from map in Context.TagMaps where TagIds.Contains(map.TagId) select map.Items;
Die Abfrage initialisiert zunächst ein ganzzahliges Array TagIds mit den gewünschten Tag-IDs. Anschließend wird die TagMaps-Tabelle mit diesem Array mithilfe der Methode „Contains“ verknüpft, die prüft, ob die TagId-Spalte von TagMaps im TagIds-Array vorhanden ist.
Diese Abfrage generiert eine parametrisierte „IN“-Klausel in der SQL-Anweisung und sorgt so für Effizienz Ausführung. Es lässt sich im Wesentlichen wie folgt übersetzen:
SELECT Items FROM TagMaps WHERE TagId IN (2, 3, 4, 7);
Das obige ist der detaillierte Inhalt vonWie repliziere ich die „IN'-Anweisung von SQL mit LINQ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!