我在下面的方法中遇到错误,我尝试将数据从combobox
添加到datagrid
然后在我添加数据后我想要计算&#的总量39; 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;
}
}
我得到的错误是:
值不能为空。
有没有人知道为什么会这样?
编辑:这是我在班级中设置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; }
}
答案 0 :(得分:3)
感谢Gert Arnold,实际问题是item.displayItems
是null
(因此不在lambda中,因为它完全正常)。
一些证据。这会收到您确切的错误消息:
double?[] x = null;
double? sum = x.Sum(y => y);
(你没有获得NullReferenceException
的原因是你实际上调用的是静态方法(扩展方法),所以从技术上讲,引用不是null,而是参数是。)
您应该检查您设置item.displayItems
的位置,或阻止在值Sum
的{{1}}上拨打item.displayItems
。