Heim >Backend-Entwicklung >C++ >Wie implementiert man einen Left Outer Join mit mehreren Join-Bedingungen in LINQ to SQL?

Wie implementiert man einen Left Outer Join mit mehreren Join-Bedingungen in LINQ to SQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-31 22:16:17544Durchsuche

How to Implement a Left Outer Join with Multiple Join Conditions 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!

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