我正在尝试过滤一些我得到的数据。 首先,将数据引入如下:
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, 非公众成员:{ 当前= ..., 枚举器= ..., 谓词= ..., .....还有更多领域, }
为什么会出现此错误? 以及如何解决?
答案 0 :(得分:3)
从您共享的代码中,唯一可能导致null引用异常的原因是在此部分的null属性上调用Equals
的方法:
Where(x => x.something.Equals("123"))
表示列表中至少一项的something
属性为null
。
您有不同的处理方式,其中一种可能是:
Where(x => x.something != null && x.something.Equals("123"))