通过使用LINQ在对象列表中进行分组来执行聚合

时间:2012-09-12 10:20:13

标签: c# .net linq object linq-to-objects

我需要通过基于另一个属性对对象进行分组来计算对象列表中某个属性的聚合。例如,我有一个包含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实现这一目标?

1 个答案:

答案 0 :(得分:4)

Average是LINQ所需要的,首先使用GroupByName进行分组:

var result = Objlist.GroupBy(x => x.Name)
            .Select(g => new {
                                 Name = g.Key, 
                                 Value = g.Average(o => o.Value)
                             });