如何获得我的收藏/班级的总和

时间:2015-07-27 07:48:52

标签: c# wpf linq class sum

我有这堂课:

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;

的定义

2 个答案:

答案 0 :(得分:2)

似乎dat ExtraDisplayItemsExtraDisplayItems类的一个实例,它不会实现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;即使您在代码示例中看到它。

为了对各种对象进行求和,您实际上需要它们的集合而不是单个对象。