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
一部の行のために存在し、私はまだこれらの行が含まれたくないかもしれません。条件がWHERE句のJOINの後に適用された場合、希望する動作が得られません。
残念ながらこれ:
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
それは私が求めているものではありません。