在c#的list集合操作中,有时候需要对list集合元素进行汇总求平均值,如数值类型的list集合元素,有时候对象类型的list集合也需要对集合中的元素的某个对象进行汇总求平均值,此时都可以使用到average来实现,average方法是list集合中的linq扩展方法,average方法有2种形式,一种是不带任何参数的average()形式,适用于数值型如int、double、decimal等数值类型的list集合计算平均值,另一种是带lambda表达式的书写形式。

(1)针对数值类型的list集合,直接调用无参数的average()形式即可实现,例如有个list<int>的集合list1,里面元素为1至10,求平均值可使用下列语句

   list<int> list1 = new list<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   var avgresutl= list1.average();

计算得到的结果为avgresutl=5.5,avgresult为double双精度类型。

(2)根据list对象集合中的某个属性进行求平均值的情况。

例如定义个测试类testmodel类,具体实现如下:

   public class testmodel
    {
         public int index { set; get; }

        public string name { set; get; }
    }

在定义一个list<testmodel>集合对象testlist,往集合中添加下面3个元素。

  list<testmodel> testlist = new list<consoleapplication1.testmodel>();
            testlist.add(new testmodel()
            {
                 index=1,
                 name="index1"
            });
            testlist.add(new testmodel()
            {
                index = 2,
                name = "index2"
            });
            testlist.add(new testmodel()
            {
                index = 3,
                name = "index3"
            });

需要对list集合中的元素的index属性进行汇总求平均值可使用下列语句:

  var avgresult = testlist.average(t => t.index);

最后计算的结果为avgresult=2,avgresult为double双精度类型。

 

备注:原文转载自博主个人站it技术小趣屋,原文链接c#中使用average方法对list集合中相应元素求平均值_it技术小趣屋。