LINQ を使用して左外部結合を記述しようとしています。SQLは次のようになります。
SELECT *
FROM Table1 td1
LEFT OUTER JOIN Table2
ON td1.ColumnName = td2.ColumnName
WHERE td2.ColumnName IS NULL
ORDER BY SomeColumns
このクエリを SQL クエリ アナライザーで実行すると、たとえば 100 件のレコードが返されます。変換した LINQ コードは 105 レコードを返します。私は次のように2つの方法でLINQを書きました。
方法 1:
var data= (from td1in Table1
join td2 in Table2.Where(a => a.ColumnName == (int?)null)
on td1.ColumnName equals td2.ColumnName into outer
from x in outer.DefaultIfEmpty()
orderby SomeColumns
select td1);
方法 2: これにより、結果の列挙に失敗したため、例外が発生します
var data = from td1 in Table1
join td2 in Table2
on td1.ColumnName equals td2.ColumnName into outer
from item in outer.DefaultIfEmpty()
where item.ColumnName.Value == (int?)null
orderby somecolumns
select td1 ;
where 句で使用される列は、null 許容の int 型です。
SQL アナライザーで返された結果は正しいようです。同じ結果を得るために私を助けてください。
ありがとう