LINQ to Entity: 複数の結合条件 質問する

LINQ to Entity: 複数の結合条件 質問する

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}

おすすめ記事