我有以下查询,查询中的“main”是前面步骤的结果。
var query = from a in main.AsEnumerable()
join b in result on a.id equals b.tId into joint
from c in joint.DefaultIfEmpty()
select new weekly()
{
id = a.id,
Mon = a.Mon
MHrs = (c.HoursList.Where(x => x.adt == "Monday")
.Select(y => y.thr).FirstOrDefault())
});
当我运行此查询时,我得到MH System.NullReferenceException
。当我评论MHrs它运行正常。
我确实尝试了
y => y.thr == null ? null : 0
但它仍然无效。
请让我知道如何修复此查询以在没有空引用异常的情况下运行它。谢谢
答案 0 :(得分:0)
当您使用DefaultIfEmpty
时,joint.DefaultIfEmpty()
将为非匹配行返回null(默认值类型),因此您必须处理: -
query= from a in main.AsEnumerable()
join b in result on a.id equals b.tId into joint
from c in joint.DefaultIfEmpty()
select new weekly()
{
id= a.id,
Mon= a.Mon
MHrs= c != null ? c.HoursList.Where(x=> x.adt=="Monday")
.Select(y=>y.thr).FirstOrDefault() : ""
});
假设thr
为String
。