我需要通过基于另一个属性对对象进行分组来计算对象列表中某个属性的聚合。例如,我有一个包含5个对象的列表,如下所示:
list<cls> Objlist = new list<cls>();
Obj1.Name="earth";
Obj1.Value = 10;
objlist.add(Obj1);
Obj2.Name="sun";
Obj2.value = 15;
objlist.add(Obj2);
Obj3.Name = "earth";
Obj3.Value = 25;
objlist.add(Obj3);
Obj4.Name = "earth";
Obj4.Value = 35;
objlist.add(Obj4);
Obj5.Name="sun";
Obj5.value = 50;
objlist.add(Obj5);
我需要的另一个列表是拥有地球和太阳物体的平均值。如何使用LINQ实现这一目标?
答案 0 :(得分:4)
Average
是LINQ所需要的,首先使用GroupBy
按Name
进行分组:
var result = Objlist.GroupBy(x => x.Name)
.Select(g => new {
Name = g.Key,
Value = g.Average(o => o.Value)
});