Heim >Datenbank >MySQL-Tutorial >Wie übersetze ich die IN-Unterabfragen von SQL in LINQ to SQL?
Verarbeitung von IN-Unterabfragen mit LINQ to SQL
In LINQ to SQL müssen Sie möglicherweise IN-Unterabfragen verarbeiten. eine häufige Operation in SQL. Betrachten wir ein Szenario:
Frage:
Wie können wir die folgende SQL-Abfrage in LINQ to SQL übersetzen?
SELECT f.* FROM Foo f WHERE f.FooId IN ( SELECT fb.FooId FROM FooBar fb WHERE fb.BarId = 1000 )
Antwort:
Um eine solche Abfrage in LINQ to SQL zu implementieren, müssen wir zwei verwenden Konzepte:
1. Unterabfrage als Sammlung von Schlüsseln:
Wir beginnen mit der Definition der Unterabfrage als Sammlung von Schlüsseln, die die Bedingung in der IN-Klausel erfüllen.
var fooBarIds = from fb in context.FooBar where fb.BarId == 1000 select fb.FooId;
2. Abfrage mit der Methode „Contains“:
Als nächstes können wir die Methode „Contains“ für die Sammlung von Schlüsseln verwenden, um zu überprüfen, ob eine bestimmte FooId vorhanden ist.
var result = from f in context.Foo where fooBarIds.Contains(f.FooId) select f;
Diese Abfrage gibt alle zurück Zeilen aus der Foo-Tabelle, in denen die FooId in der Sammlung der aus der Foo-Tabelle abgerufenen FooIds vorhanden ist Unterabfrage.
Erweiterte Anwendungsfälle:
Die gleichen Prinzipien können angewendet werden, um andere Unterabfragevorgänge zu implementieren, wie z. B. EXISTS:
// EXISTS var q = from t1 in table1 let t2s = from t2 in table2 where <Conditions for table2> select t2.KeyField where t2s.Any(t1.KeyField) select t1;
Das obige ist der detaillierte Inhalt vonWie übersetze ich die IN-Unterabfragen von SQL in LINQ to SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!