首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DefaultIfEmpty上的LINQ NullReferenceException

DefaultIfEmpty上的LINQ NullReferenceException
EN

Stack Overflow用户
提问于 2012-10-24 23:08:58
回答 2查看 3.5K关注 0票数 6

我正在寻找一种解决方案,以解决在DefaultIfEmpty()外部连接中使用LINQ扩展方法时不能拾取空值的问题。

代码如下:

代码语言:javascript
复制
            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),
                                         });

在列表SummaryLosses中,我希望将许多年的数据连接到'nets‘表中,该表包含年份的一个子部分。异常是在x为空值时抛出的,我假设是因为SummaryLosses中的年份与nets中的年份不匹配,从而在分组列表中创建了空值。

应该如何检查这里的空值呢?如你所见,我试图检查x的属性是否为null,但由于x为null,所以这不起作用。

亲切地问候理查德

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-24 23:13:44

只需检查x是否为null即可:

代码语言:javascript
复制
OEPNET = x == null ? 0 : x.OEPRecovery,
AEPNET = x == null ? 0 : x.AEPRecovery

或者,如果x.OEPRecoveryx.AEPRecovery也是可以为空的属性,则使用:

代码语言:javascript
复制
OEPNET = x == null ? 0 : (x.OEPRecovery ?? 0),
AEPNET = x == null ? 0 : (x.AEPRecovery ?? 0)
票数 8
EN

Stack Overflow用户

发布于 2016-08-30 19:34:46

如果有许多join语句

检查检查all joined tables并确保foreign key you are using (正在比较或感兴趣) is not null

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13052065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档