Heim >Backend-Entwicklung >C++ >Wie führe ich einen LINQ to SQL Left Outer Join mit mehreren Join-Bedingungen durch?

Wie führe ich einen LINQ to SQL Left Outer Join mit mehreren Join-Bedingungen durch?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 12:11:40572Durchsuche

How to Perform a LINQ to SQL Left Outer Join with Multiple Join Conditions?

LINQ to SQL: Left Outer Join mit mehreren Join-Bedingungen

In LINQ to SQL werden SQL-Abfragen übersetzt, die Left Outer Joins mit mehreren Join-Bedingungen beinhalten Die Bedingungen können herausfordernd sein. Dieser Artikel befasst sich mit einem Szenario, in dem eine SQL-Abfrage mit einem Left Outer Join und einer zusätzlichen Join-Bedingung in LINQ konvertiert werden muss.

SQL-Abfrage

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

LINQ-Übersetzung
Die typische LINQ-Implementierung eines Left Outer Joins mit DefaultIfEmpty() kann unkompliziert sein, beinhaltet aber das Zusätzliche Die Join-Bedingung erfordert eine sorgfältige Überlegung.

Der folgende erste Versuch ist zwar syntaktisch korrekt, führt jedoch nicht zum gewünschten Ergebnis:

from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value

Um das gewünschte Verhalten zu erreichen, muss die zusätzliche Join-Bedingung eingeführt werden bevor Sie DefaultIfEmpty() aufrufen. Dies wird entweder mithilfe der Erweiterungsmethodensyntax oder einer Unterabfrage erreicht:

Erweiterungsmethodensyntax

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

Unterabfrage

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

Das obige ist der detaillierte Inhalt vonWie führe ich einen LINQ to SQL Left Outer Join mit mehreren Join-Bedingungen durch?. 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