LINQ と複数の結合に関する投稿は多数あります。ただし、私が行いたい結合に対する解決策は見つかりませんでした。
SQL では次のようになります。
SELECT * FROM table1 a
LEFT JOIN table2 b ON a.col1 = b.key1 AND
a.col2 = b.key2 AND
b.from_date <= now() AND
b.deleted = 0;
これは私が試した数多くのlinqクエリの1つです
var query = (from x in context.table1
join y in context.table2 on new {x.col1, x.col2} equals {b.key1, b.key2}
into result
from result......
日付と削除フラグの追加条件を追加するにはどうすればよいでしょうか? .Where 条件を使用すると、これは左結合ではなく内部結合として扱われます。
ベストアンサー1
もう一つの方法は
var query = (from x in context.table1
join y in context.table2 on
new {
Key1 = x.col1,
Key2 = x.col2,
Key3 = true,
Key4 = true
}
equals
new {
Key1 = y.key1,
Key2 = y.key2,
Key3 = y.from_date< DateTime.Now,
Key4 = !y.deleted
}
into result
from r in result.DefaultIfEmpty()
select new {x.Something, r.Something}