Linq-Where的短路

时间:2015-01-12 10:36:49

标签: c# linq nullreferenceexception

我在Linq-Where方法中遇到问题。我在where子句中得到NullReferenceException,这不应该发生,因为C#应该使用短路而第二个操作不能执行:

enter image description here

如果Item为空,则不应调用Item.State == ...,因为条件已经为真(短路)。

但似乎在这种情况下,短路不起作用。

有没有其他人解决过这个问题?谢谢!

修改: 最后,connectionList不应包含任何空值并且不应断开连接。

1 个答案:

答案 0 :(得分:0)

查询数据库时,这是常见问题。也就是说,将短路行为转换为数据库,不要像你期望的那样工作。您可以阅读有关此类行为的更多信息:The || (or) Operator in Linq with C#

你可以试试这个:

connectionList.RemoveRange(connectionList.Where(x => x==null));
connectionList.SaveChanges();
connectionList.RemoveRange(connectionList.Where(x => x.Item==BrokenState));

看它是否有效。