Linq查询中的引用错误即使检查Null也不会消失
本文关键字:Null 检查 消失 查询 引用 错误 Linq | 更新日期: 2023-09-27 18:17:40
我有以下查询,查询中的"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())
});
当我运行这个查询时,我得到System.NullReferenceException
为mhr。当我注释掉mhr时,它运行得很好。
I did try
y => y.thr == null ? null : 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