【发布时间】:2016-01-21 19:55:31
【问题描述】:
这是我的清单:
var MaxItemCountFromRegItems = RegisteredItems.MyRegisteredItems
.Where(s => s.ItemID == _itemID)
.Sum(s => s.Posted);`
失败并出现错误:
异常:System.ArgumentNullException:值不能为空。
它的明显错误发生是因为集合是空的。我想知道如何避免它。
【问题讨论】:
-
一定是
null。 -
查看答案(如何在源集合为空时强制 LINQ Sum() 返回 0)(stackoverflow.com/questions/17593371/…)
-
异常不会发生,因为集合是空的。
MyRegisteredItems是否有可能为空? -
您可以使用空合并运算符来确保您有一个非空集合:
var myCollection = RegisteredItems.MyRegisteredItems ?? Enumerable.Empty<ClassRegisteredItems>(); myCollection.Where(...)。或者,如果您有权访问公开此集合的代码,则可以确保MyRegisteredItems永远不会是null。 -
您需要检查堆栈跟踪以了解错误来自何处。我的猜测是
RegisteredItems.MyRegisteredItems并且异常是从Where扩展方法抛出的。