尝试将 LINQ 查询应用于由于另一个 LIN 而具有的列表时出错

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

提问人:Galilo Galilo 提问时间:4/26/2019 最后编辑:Galilo Galilo 更新时间:4/26/2019 访问量:45

问:

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

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();

调试时,我在

问:{ 当前 = 空, 非公共成员:{ 电流 = ..., 枚举器= ..., 谓语= ..., .....再多一点田地, } }

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

C# LINQ NullReferenceException

评论

0赞 Amir Molaei 4/26/2019
也请分享。inner exception message
2赞 Justin Lessard 4/26/2019
x.something必须为 null。
0赞 Galilo Galilo 4/26/2019
对不起,我正在从另一台计算机复制我的代码。
1赞 Justin Lessard 4/26/2019
只需更改为tasks1.where(x => x.something.Equals("123"))tasks1.where(x => x.something == "123")
2赞 Cleptus 4/26/2019
[NULL].Equals(将引发 因为 null 对象没有可以调用的方法,它不是一个实例。另一方面会起作用。NullReferenceException[null property] == value

答:

3赞 Amir Molaei 4/26/2019 #1

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

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

这意味着列表中至少一项的属性是 。
您有不同的处理方法,其中一种可能是:
somethingnull

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

评论

0赞 Cleptus 4/26/2019
或者 x.property == value