提问人:Galilo Galilo 提问时间:4/26/2019 最后编辑:Galilo Galilo 更新时间:4/26/2019 访问量:45
尝试将 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是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();
调试时,我在
问:{ 当前 = 空, 非公共成员:{ 电流 = ..., 枚举器= ..., 谓语= ..., .....再多一点田地, } }
为什么会出现此错误? 以及如何解决它?
答:
3赞
Amir Molaei
4/26/2019
#1
从您共享的代码中,null 引用异常的唯一原因可能是在此部分调用 on a null 属性的方法:Equals
Where(x => x.something.Equals("123"))
这意味着列表中至少一项的属性是 。
您有不同的处理方法,其中一种可能是:something
null
Where(x => x.something != null && x.something.Equals("123"))
评论
0赞
Cleptus
4/26/2019
或者 x.property == value
评论
inner exception message
x.something
必须为 null。tasks1.where(x => x.something.Equals("123"))
tasks1.where(x => x.something == "123")
[NULL].Equals(
将引发 因为 null 对象没有可以调用的方法,它不是一个实例。另一方面会起作用。NullReferenceException
[null property] == value