Ho il seguente SQL, che sto cercando di tradurre in LINQ:LINQ to SQL - sinistra outer join con più condizioni di join
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
ho visto il tipico attuazione del join esterno sinistro (es. into x from y in x.DefaultIfEmpty()
ecc), ma sono sicuro di come introdurre l'altra condizione di join (AND f.otherid = 17
)
EDIT
Perché è la parte AND f.otherid = 17
condizioni di il JOIN invece che nella clausola WHERE? Perché f
potrebbe non esistere per alcune righe e voglio comunque includere queste righe. Se la condizione è applicata nella clausola WHERE, dopo il JOIN - allora non ho il comportamento che voglio.
Purtroppo questo:
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
sembra essere equivalente a questo:
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
che non è proprio quello che sto cercando.
Dolce!Sono stato alla ricerca di questo per un po 'ma non ero sicuro di come cercare questo. Non sei sicuro di come aggiungere tag a questa risposta. Ecco i criteri di ricerca che ho usato: da linq a sql filter in join o da da linq a sql dove clausola in join o da – Solburn