我在Linq-Where方法中遇到问题。我在where子句中得到NullReferenceException,这不应该发生,因为C#应该使用短路而第二个操作不能执行:
如果Item
为空,则不应调用Item.State == ...
,因为条件已经为真(短路)。
但似乎在这种情况下,短路不起作用。
有没有其他人解决过这个问题?谢谢!
修改:
最后,connectionList
不应包含任何空值并且不应断开连接。
答案 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));
看它是否有效。