尝试将linq查询应用于由于另一条lin而导致的列表时发生错误

时间:2019-04-25 18:13:43

标签: c# linq nullreferenceexception

我正在尝试过滤一些我得到的数据。 首先,将数据引入如下:

List<task> method1(){    
return context.Tasks.where(x => x.date < Datetime.Today()).Tolist();
}

然后我尝试执行以下操作:

void method2(){
List<task> tasks1 = method1();
}

到目前为止,我已经用调试器显示的6条记录填充了任务列表。但是当我尝试使用此列表时,我得到一个nullreferenceexception> task1是6个任务的列表。

List<Task> tasks2 = tasks1.where(x => x.something.Equals("123")).tolist();

要进行调试和更深入的研究,我尝试将代码分离如下:

var q = tasks1.where(x => x.something.Equals("123"));
  List<Task> tasks2 = q.tolist();

调试时,我在

中发现了以下数据
  

q:{current = null,       非公众成员:{                     当前= ...,                     枚举器= ...,                     谓词= ...,                     .....还有更多领域,                 }

为什么会出现此错误? 以及如何解决?

1 个答案:

答案 0 :(得分:3)

从您共享的代码中,唯一可能导致null引用异常的原因是在此部分的null属性上调用Equals的方法:

Where(x => x.something.Equals("123"))

表示列表中至少一项的something属性为null
您有不同的处理方式,其中一种可能是:

Where(x => x.something != null && x.something.Equals("123"))