我正在尝试使用 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 条记录。我以两种方式编写了 LINQ,
方法一:
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 子句中使用的列是可为空的 int 类型。
SQL 分析器中返回的结果似乎是正确的。请帮助我获得相同的结果。
谢谢