具有聚合函数的lambda表达式

时间:2013-11-02 20:10:16

标签: c# linq lambda

我正在尝试从Microsoft网站学习lambda表达式,我正在尝试将其应用于我创建的场景,以便更深入地了解该站点试图演示的内容。我偶然发现了与linq和lambda相关联的聚合函数。请告诉我正在尝试实现的正确语法。基本上,我有一个名为item的类,它有3个属性:category,ID和weight。一个类别可以有多个与之关联的ID,我正在考虑获取一个类别的总权重,该类别是具有我指定类别的每个ID的所有单个权重的总和。 更具体地说,这是我结构的摘录:

class item
    {
        public int NodeID
        { get; set; }
        public int Weight
        { get; set; }
        public int Category
        { get; set; }
    }

我有以下字典:

Dictionary<int,item> _itemsReceivedList=new Dictionary<int,item>();

这是我试图获得类别c的总重量的地方:

_itemsReceivedList.Select(x=>x.Value.Category==c)
.Sum( what should I put here for the predicate? )

我想总结每个具有类别c的项目的权重。 请指教。谢谢!

3 个答案:

答案 0 :(得分:3)

var sum = _itemsReceivedList
            .Where(x=>x.Value.Category==c)
            .Sum(x=>x.Value.Weight);

答案 1 :(得分:3)

int weight = _itemsReceivedList.Where(x => x.Value.Category == c)
                               .Select(s => s.Value)
                               .Sum(item => item.Weight);

我认为c在其他地方被声明为int

ScreenPrint

答案 2 :(得分:2)

写这个

_itemsReceivedList.Where(x=>x.Value.Category==c).Sum(x => x.Weight);