gpt4 book ai didi

c# - linq to sql左连接,需要检查右表是否为空

转载 作者:太空狗 更新时间:2023-10-29 21:51:21 24 4
gpt4 key购买 nike

我在 linq to sql 中进行左连接,所以我的问题是在选择正确的表字段时,我正在检查每个字段是否连接的对象是否为 null,这是正确的方法吗?或者还有其他方法吗?我的查询就像

from u in user
join x in employeee on u.id equals x.userId
into ux from ujoinx in ux.DefaultIfEmpty()
join y in department on x.id equals y.employeeId
into xy from xjoiny in xy.DefaultIfEmpty()
select new {
EmployeeSal = ujoinx!=null?ujoinx.employeeSal:0, // see checkig for null
EmployeeTax = ujoinx!=null?ujoinx.employeeTax:0, // in this 3 lines
UserName = u.username,
DeptName = xjoiny!=null?xjoiny.name:"" //is this a correct way ?
}

查询正确地得到了答案,但如果我不检查这几个字段是否为 null它抛出 object reference not set.....errorDefaultIfEmpty() 到底在做什么??

最佳答案

你所做的是正确的。

来自 msdn , DefaultIfEmpty 返回:

An IEnumerable<T> object that contains the default value for the TSource type if source is empty; otherwise, source.

换句话说,当集合为空时,它将返回 T 的默认值。引用类型的默认值为 null - 这就是为什么在选择 DeptName 时必须检查 null 的原因。

关于c# - linq to sql左连接,需要检查右表是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11032700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com