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.