如何在连接linq语法中比较null [英] how to compare null in join linq syntax

查看:97
本文介绍了如何在连接linq语法中比较null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在EF 4 C#上工作。加入中的问题。 sql语法

Work on EF 4 C#.Face problem in join . sql syntax

Select a.Code, b.Name from DepartmentMaster a
Join DepartmentDetail  b on isnull( a.ID,0) =isnull( b.ID,0)

注意 a.ID,b.ID都是可以空的

Note: a.ID ,b.ID Both are nullable

想要上面的语法放在Linq语法中.Bellow语法对我来说不起作用

Want above syntax out put in Linq syntax .Bellow syntax is not working for me

Var r=from a in DepartmentMaster
Join b in DepartmentDetail  on a.ID equals b.ID
Select a.Code,b.Name

需要帮助编写sql语法isnull()可比较的进程在linq ef。

Need help to write sql syntax isnull() comparable process in linq ef.

如果有任何查询,请问,感谢高级

If have any query please ask,thanks in advanced

推荐答案

您可以使用null-coalescing运算符如果id为null,则提供默认值:

You can use null-coalescing operator to provide default value if id is null:

from c in DepartmentMaster
join b in DepartmentDetail
    on (a.ID ?? 0) equals (b.ID ?? 0)
select new {
    a.Code, b.Name
}

查询

SELECT [t0].[Code], [t1].[Name] AS [ID1]
FROM [DepartmentMaster] AS [t0]
INNER JOIN [DepartmentDetail] AS [t1] 
    ON (COALESCE([t0].[ID],@p0)) = (COALESCE([t1].[ID],@p1))

ISNULL 但结果应该相同。

这篇关于如何在连接linq语法中比较null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆