LINQ to SQL - Left Outer Join z wieloma warunkami łączenia

Mam następujący SQL, który próbuję przetłumaczyć na LINQ:

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

Widziałem typową implementację lewego sprzężenia zewnętrznego (tj.into x from y in x.DefaultIfEmpty() itp.), ale nie wiem, jak wprowadzić inny warunek łączenia (AND f.otherid = 17)

EDYTOWAĆ

Dlaczego jestAND f.otherid = 17 warunkować część JOIN zamiast w klauzuli WHERE? Bof może nie istnieć dla niektórych wierszy i nadal chcę, aby te wiersze zostały uwzględnione. Jeśli warunek jest zastosowany w klauzuli WHERE, po JOIN - wtedy nie otrzymuję pożądanego zachowania.

Niestety to:

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

wydaje się być równoważny z tym:

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

co nie jest do końca tym, czego szukam.

questionAnswers(5)

yourAnswerToTheQuestion