Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询中出现空引用错误';即使检查空值也不会消失_C#_.net_Linq_Lambda - Fatal编程技术网

C# Linq查询中出现空引用错误';即使检查空值也不会消失

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,

我有以下查询,查询中的“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())
           });
当我运行这个查询时,我得到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,在附加信息下,它表示对象引用未设置为对象的实例。