LINQ to SQL - Linke äußere Verknüpfung mit mehreren Verknüpfungsbedingungen

Ich habe das folgende SQL, das ich versuche, in LINQ zu übersetzen:

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

Ich habe die typische Implementierung der linken äußeren Verbindung gesehen (dh.into x from y in x.DefaultIfEmpty() usw.), bin mir aber nicht sicher, wie ich die andere Join-Bedingung einführen soll (AND f.otherid = 17)

BEARBEITEN

Warum ist derAND f.otherid = 17 Bedingungsteil des JOIN anstelle der WHERE-Klausel? weilf existiert möglicherweise nicht für einige Zeilen und ich möchte weiterhin, dass diese Zeilen eingeschlossen werden. Wenn die Bedingung in der WHERE-Klausel nach dem JOIN angewendet wird, erhalte ich nicht das gewünschte Verhalten.

Leider ist dies:

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

scheint dazu äquivalent zu sein:

SELECT f.value
FROM period as p 
LEFT OUTER JOIN facts AS f ON p.id = f.periodid 
WHERE p.companyid = 100 AND f.otherid = 17

Das ist nicht ganz das, wonach ich bin.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage