值不能为空.错误

本文关键字:错误 不能 | 更新日期: 2023-09-27 18:04:47

我有一个错误与下面的方法,我试图添加数据从comboboxdatagrid,然后在我添加数据后,我想计算'ItemSellingPrice'的总金额,并在标签中显示该金额。

using (TruckServiceClient TSC = new TruckServiceClient())
{
    var item = cmbAddExtras.SelectedItem as ExtraDisplayItems;
    if (item != null)
    {
        var displayItem = new List<ExtraDisplayItems>
        {
            new ExtraDisplayItems 
            { 
                displayItems = item.displayItems,
                ItemId = item.ItemId, 
                ItemCode = item.ItemCode, 
                ItemDescription = item.ItemDescription, 
                ItemSellingPrice = item.ItemSellingPrice,
            }
        };
        dgAddExtras.Items.Add(item);
        var subTotalExtras = item.displayItems.Sum(x => x.ItemSellingPrice.GetValueOrDefault(0)); //Here
        lblSubTotalExtrasAmount.Content = "R" + subTotalExtras;
    }
}
我得到的错误是:

Value不能为空。

有人知道为什么会发生这种情况吗?

EDIT:这是我设置displayItems在我的类

public class ExtraDisplayItems
{
    public List<ExtraDisplayItems> displayItems;
    public int ItemId { get; set; }    
    public string ItemCode { get; set; }    
    public string ItemDescription { get; set; }    
    public double? ItemSellingPrice { get; set; }
}

值不能为空.错误

多亏了Gert Arnold,实际的问题是item.displayItemsnull(所以不是在lambda中,因为它工作得很好)。

一些证据。这会得到确切的错误信息:

double?[] x = null;
double? sum = x.Sum(y => y);

(你没有得到NullReferenceException的原因是你实际上调用了一个静态方法(一个扩展方法),所以从技术上讲,引用不是空的,但参数是空的)。

您应该检查您设置item.displayItems的位置或防止在值为nullitem.displayItems上调用Sum

相关文章: