尝试将 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"))
我正在尝试过滤一些我得到的数据。 首先带来的数据如下:
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"))