LINQ to SQL - Unión externa izquierda con múltiples condiciones de unión

Tengo el siguiente SQL, que estoy tratando de traducir a 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

He visto la implementación típica de la unión externa izquierda (es decir,into x from y in x.DefaultIfEmpty() etc.) pero no estoy seguro de cómo introducir la otra condición de unión (AND f.otherid = 17)

EDITAR

Porque es elAND f.otherid = 17 ¿Condiciona parte de JOIN en lugar de en la cláusula WHERE? Porquef puede que no exista para algunas filas y todavía quiero que se incluyan estas filas. Si la condición se aplica en la cláusula WHERE, después de la combinación, entonces no obtengo el comportamiento que deseo.

Desafortunadamente esto:

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

Parece ser equivalente a esto:

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

que no es exactamente lo que busco.

Respuestas a la pregunta(5)

Su respuesta a la pregunta