我有这堂课:
public class ExtraDisplayItems
{
public int ItemId { get; set; }
public string ItemCode { get; set; }
public string ItemDescription { get; set; }
public double? ItemSellingPrice { get; set; }
}
然后我使用以下方法将数据添加到类中:
using (TruckServiceClient TSC = new TruckServiceClient())
{
var item = cmbAddExtras.SelectedItem as ExtraDisplayItems;
if (item != null)
{
var displayItem = new List<ExtraDisplayItems>
{
new ExtraDisplayItems
{
ItemId = item.ItemId,
ItemCode = item.ItemCode,
ItemDescription = item.ItemDescription,
ItemSellingPrice = item.ItemSellingPrice
}
};
dgAddExtras.Items.Add(item);
}
}
现在我要做的是创建一个只读属性,我将获得ItemSellingPrice
的总 Sum ,但在此属性中我无法到达{{1}在尝试计算Sum
?
这就是我想要编码的方式:
double
但是......它给了我错误:
ExtraDisplayItems不包含&#39; Sum&#39;
的定义
我将如何解决这个问题?
修改
我已将课程改为:
public double? SubTotalExtras
{
get { return ExtraDisplayItems.Sum(x => x.ItemSellingPrice); }
}
和...
public class ExtraDisplayItems
{
private List<ExtraDisplayItems> displayItems;
public int ItemId { get; set; }
...
}
但它现在抛出错误:不包含&#39; displayItems&#39;
的定义答案 0 :(得分:2)
似乎dat ExtraDisplayItems
是ExtraDisplayItems
类的一个实例,它不会实现IEnumerable<T>
(即:&#39;它是某些内容的集合&# 39)。这意味着它确实没有Sum
方法,扩展方法也不适用。
我现在最好的猜测是,您应该在视图模型的某处保存displayItem
(这是List<ExtraDisplayItems>
,以便它实现IEnumerable<ExtraDisplayItems>
)并调用{{1}在那上面。
另外,使用命名约定:你使复数变为单数,反过来......非常令人困惑......
答案 1 :(得分:1)
您可能在使用定义中缺少Linq。
using System.Linq;
编辑:
我假设ExtraDisplayItems是一个集合,那么通常会有错误&#39; x不包含&#39; Sum&#39;&#39;&#39;&#39;&#39;即使您在代码示例中看到它。
为了对各种对象进行求和,您实际上需要它们的集合而不是单个对象。