Heim >Datenbank >MySQL-Tutorial >Wie übersetze ich die IN-Unterabfragen von SQL in LINQ to SQL?

Wie übersetze ich die IN-Unterabfragen von SQL in LINQ to SQL?

Linda Hamilton
Linda HamiltonOriginal
2024-12-28 18:39:14472Durchsuche

How to Translate SQL's IN Subqueries into 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn