我正在寻找一种解决方案,以解决在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),
});在列表SummaryLosses中,我希望将许多年的数据连接到'nets‘表中,该表包含年份的一个子部分。异常是在x为空值时抛出的,我假设是因为SummaryLosses中的年份与nets中的年份不匹配,从而在分组列表中创建了空值。
应该如何检查这里的空值呢?如你所见,我试图检查x的属性是否为null,但由于x为null,所以这不起作用。
亲切地问候理查德
发布于 2012-10-24 23:13:44
只需检查x是否为null即可:
OEPNET = x == null ? 0 : x.OEPRecovery,
AEPNET = x == null ? 0 : x.AEPRecovery或者,如果x.OEPRecovery和x.AEPRecovery也是可以为空的属性,则使用:
OEPNET = x == null ? 0 : (x.OEPRecovery ?? 0),
AEPNET = x == null ? 0 : (x.AEPRecovery ?? 0)发布于 2016-08-30 19:34:46
如果有许多join语句
检查检查
all joined tables并确保foreign key you are using(正在比较或感兴趣)is not null
https://stackoverflow.com/questions/13052065
复制相似问题