je l'instruction SQL suivante, que je suis en train de se traduire par LINQ:LINQ to SQL - Gauche jointure externe avec plusieurs conditions de jointure
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
J'ai vu la mise en œuvre typique de la jointure externe gauche (ie. into x from y in x.DefaultIfEmpty()
etc.), mais je suis pas sûr de savoir comment introduire l'autre condition de jointure (AND f.otherid = 17
)
EDIT
Pourquoi la partie AND f.otherid = 17
condition de le JOIN au lieu de dans la clause WHERE? Parce que f
peut ne pas exister pour certaines lignes et je veux toujours ces lignes à inclure. Si la condition est appliquée dans la clause WHERE, après le JOIN - alors je n'obtiens pas le comportement que je veux.
Malheureusement ceci:
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
semble être équivalent à ceci:
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
qui est pas tout à fait ce que je suis après.
Sweet!Je l'ai cherché pendant un certain temps, mais je ne savais pas comment chercher cela. Vous ne savez pas comment ajouter des tags à cette réponse. Voici les critères de recherche que j'ai utilisés: linq to sql filter dans join ou à partir de linq to sql où clause dans join ou – Solburn