LINQ로 번역하려고하는 다음 SQL이 있습니다.
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
왼쪽 외부 조인 (예 : into x from y in x.DefaultIfEmpty()
등) 의 일반적인 구현을 보았지만 다른 조인 조건을 소개하는 방법을 잘 모르겠습니다 ( AND f.otherid = 17
)
편집하다
AND f.otherid = 17
WHERE 절 대신 조건이 JOIN의 일부인 이유는 무엇 입니까? 때문에 f
일부 행을 위해 존재하고 난 여전히 싶지 않을 수도 있습니다 이러한 행이 포함되어야합니다. JOIN 후에 WHERE 절에 조건이 적용되면 원하는 동작을 얻지 못합니다.
불행히도 이것은 :
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
이것과 동등한 것 같습니다 :
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
그것은 내가 추구하는 것이 아닙니다.