C# Linq查询中出现空引用错误';即使检查空值也不会消失
我有以下查询,查询中的“main”是前面步骤的结果C# Linq查询中出现空引用错误';即使检查空值也不会消失,c#,.net,linq,lambda,C#,.net,Linq,Lambda,我有以下查询,查询中的“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,
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())
});
当我运行这个查询时,我得到MHrs的System.NullReferenceException
。当我评论出MHR时,它运行良好
我确实试过了
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
您确定得到的是NullReferenceException而不是ArgumentNullException吗?可能是HoursList集合为null。您知道x.adt是null还是y.thr是null吗?y=>y.thr==null?null:0应如下所示:y=>y.thr==null?0:y.thrin c#引用类型的默认值为null,因此如果joint
为空,c
为null错误为:NullReferenceException,在附加信息下,它表示对象引用未设置为对象的实例。