尝试将 linq 查询应用于我作为另一个 lin 的结果的列表时出错

error when trying to apply a linq query to a list that i have as a result of another lin

我正在尝试过滤一些我得到的数据。 首先带来的数据如下:

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

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

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

到目前为止,我已经用调试器显示的 6 条记录填充了任务列表。但是当我尝试 linq 这个列表时,我得到一个 nullreferenceexception> tasks1 is a list of 6 tasks.

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, non-public-members: { current = ..., enumerator= ..., predicate= ..., .....and a little more fields, } }

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

从您共享的代码来看,空引用异常的唯一原因可能是在空 属性 int 这部分调用 Equals 的方法:

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

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

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