【发布时间】:2023-03-28 17:46:01
【问题描述】:
我正在尝试使用 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,
方法一:
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 分析器返回的结果似乎是正确的。 请帮助我获得相同的结果。
谢谢
【问题讨论】:
标签: c# linq-to-sql left-join outer-join