Heim >Backend-Entwicklung >C++ >Wie implementiert man einen Left Outer Join mit mehreren Join-Bedingungen in LINQ to SQL?
LINQ to SQL: Implementieren eines Left Outer Join mit mehreren Join-Bedingungen
LINQ to SQL ermöglicht die Erstellung komplexer Abfragen mithilfe eines C# Syntax. Eine häufige Aufgabe ist die Implementierung eines linken äußeren Joins mit mehreren Join-Bedingungen.
Um zu verstehen, warum die Join-Bedingung in die JOIN-Anweisung anstelle der WHERE-Klausel einbezogen werden muss, betrachten Sie die folgende SQL-Anweisung:
SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100
Auch wenn die Faktentabelle (f) keine Zeilen enthält, die einem bestimmten Zeitraum entsprechen, möchten wir, dass dieser Zeitraum dennoch in die Ergebnisse einbezogen wird. Durch Platzieren der zusätzlichen Join-Bedingung in der WHERE-Klausel würden solche Punkte aus den Ergebnissen weggelassen.
Die Lösung von LINQ to SQL beinhaltet die Verwendung der Syntax der Erweiterungsmethode. Das folgende Code-Snippet zeigt, wie:
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value
Alternativ können Sie eine Unterabfrage verwenden:
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value
Durch die Platzierung der Join-Bedingung in der JOIN-Anweisung stellen wir sicher, dass nur Punkte mit a entsprechende Tatsachen, die die Bedingung otherid = 17 erfüllen, werden in die Ergebnisse einbezogen, während weiterhin ein Left Outer Join durchgeführt wird. Dieser Ansatz ermöglicht es uns, das gewünschte Verhalten zu erreichen, ohne auf die Vorteile des Left Outer Join zu verzichten.
Das obige ist der detaillierte Inhalt vonWie implementiert man einen Left Outer Join mit mehreren Join-Bedingungen in LINQ to SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!