值不能为空.错误
本文关键字:错误 不能 | 更新日期: 2023-09-27 18:04:47
我有一个错误与下面的方法,我试图添加数据从combobox
到datagrid
,然后在我添加数据后,我想计算'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.displayItems
是null
(所以不是在lambda中,因为它工作得很好)。
一些证据。这会得到确切的错误信息:
double?[] x = null;
double? sum = x.Sum(y => y);
(你没有得到NullReferenceException
的原因是你实际上调用了一个静态方法(一个扩展方法),所以从技术上讲,引用不是空的,但参数是空的)。
您应该检查您设置item.displayItems
的位置或防止在值为null
的item.displayItems
上调用Sum
。