总和在空列表上失败

时间:2016-01-21 19:55:32

标签: c# linq

这是我的清单:

var MaxItemCountFromRegItems = RegisteredItems.MyRegisteredItems
                                              .Where(s => s.ItemID == _itemID)
                                              .Sum(s => s.Posted);`

失败并显示错误:

  

异常:System.ArgumentNullException:值不能为null。

发生明显错误,因为收集是空的。我想知道如何避免它。

3 个答案:

答案 0 :(得分:5)

使用DefaultIfEmpty

var MaxItemCountFromRegItems = RegisteredItems.MyRegisteredItems
                               .Where(s => s.ItemID == _itemID)
                               .Select(c=>c.Posted)
                               .DefaultIfEmpty(0).Sum();

答案 1 :(得分:1)

试试这个:

if (registeredItems.MyRegisteredItems != null)
{
    var maxItemCountFromRegItems = registeredItems.MyRegisteredItems
        .Where(s => s.ItemID == _itemID)
        .Sum(s => s.Posted);    
}

干杯。

答案 2 :(得分:0)

正确答案是:

if(RegisteredItems.MyRegisteredItems != null)
{

var SumOfItems = RegisteredItems.MyRegisteredItems
                               .Where(x => x.ItemID == _itemID)
                               .Select(o=>o.AmountField)
                               .DefaultIfEmpty(0).Sum();
}