我正在尝试从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的项目的权重。 请指教。谢谢!
答案 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
答案 2 :(得分:2)
写这个
_itemsReceivedList.Where(x=>x.Value.Category==c).Sum(x => x.Weight);