如何在linq中的连接条件中使用null

时间:2014-10-08 15:24:46

标签: sql .net linq

我在将此SQL语句转换为linq查询时遇到问题。我还没有找到一种方法如何在OR的JOIN条件中使用null。 以下是示例SQL语句:

SELECT a.* FROM TableA a JOIN TableB b ON (a.Id = b.Id) OR a.Id IS NULL

什么是等效的linq声明?我正在寻找一个与上述SQL语句中的连接条件相同的连接条件。

from a in TableA join b in TableB on ??? equals ??? select a;

我搜索了一个现有的帖子,但显然无法在这个特定问题上找到一个帖子。 感谢。

1 个答案:

答案 0 :(得分:0)

join非常挑剔,因此您只能将它们用于非常具体的事情。但是,使用嵌套的from语句很容易获得相同的结果:

from a in TableA 
from b in TableB 
where a.Id == b.Id or a.Id == null
select a;

此外,根据您真正想要查找的数据,这可能是一个更合适的查询:

from a in TableA 
where a.Id == null || TableB.Any(b => b.Id == a.Id)
select a;