gpt4 book ai didi

DefaultIfEmpty 上的 LINQ NullReferenceException

转载 作者:行者123 更新时间:2023-12-04 14:31:19 24 4
gpt4 key购买 nike

我正在寻找解决 DefaultIfEmpty() 问题的方法在 LINQ 外连接中使用时,扩展方法不获取空值。

代码如下:

            var SummaryLossesWithNets = (from g in SummaryLosses
join n in nets
on g.Year equals n.Year into grouping
from x in grouping.DefaultIfEmpty()
select new
{
Year = g.Year,
OEPGR = g.OccuranceLoss,
AEPGR = g.AggregateLoss,
OEPNET = ((x.OEPRecovery == null) ? 0 : x.OEPRecovery),
AEPNET = ((x.AEPRecovery == null) ? 0 : x.AEPRecovery),
});

在 List SummaryLosses 中,我希望将许多年的数据加入到包含年份子部分的“nets”表中。 x 为空值时抛出异常,我假设是因为 SummaryLosses 中的年份与 nets 中的年份不匹配,因此在分组列表中创建了空值。

应该如何检查此处的空值?正如你所看到的,我试图检查 x 的属性是否为空,但由于 x 为空,这不起作用。

亲切的问候
理查德

最佳答案

只需检查是否x为空:

OEPNET = x == null ? 0 : x.OEPRecovery,
AEPNET = x == null ? 0 : x.AEPRecovery

或者如果 x.OEPRecoveryx.AEPRecovery也是可为空的属性,请使用:
OEPNET = x == null ? 0 : (x.OEPRecovery ?? 0),
AEPNET = x == null ? 0 : (x.AEPRecovery ?? 0)

关于DefaultIfEmpty 上的 LINQ NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052065/

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