C#中的“Language-Integrated Query”(简称:Linq)是一种强大的查询技术,它提供了一种方便、快速、灵活的方法来查询各种数据源。Linq中有许多方法,其中一个非常常用的方法就是Average()。下面就让我们来详细了解一下Average()方法的使用和实现。
方法概述
Average()方法可以用于计算一个序列的平均数,支持对整数、浮点数、decimal类型序列进行求均值,或使用selector函数对其他类型的序列求均值。它可以通过两种不同的方式调用:
Queryable.Average<TSource>(IQueryable<TSource>, Expression<Func<TSource, int>>)
Enumerable.Average<TSource>(IEnumerable<TSource>, Func<TSource, int>)
方法参数说明
以下是Average()方法的两个参数列表:
IQueryable
数值类型的源序列,其中包含要计算平均数的元素。
Expression>
一个用于从序列的每个元素中提取一个int值的lambda函数。
IEnumerable
数值类型的源序列,其中包含要计算平均数的元素。
Func
一个用于从序列的每个元素中提取一个int值的lambda函数。
使用示例
以下是两个不同的示例,来说明如何使用Average()方法:
示例1
前置条件:我们有一个int类型的数组,需要计算平均值。
int[] scores = { 90, 98, 87, 45, 76 };
double averageScore = scores.Average();
Console.WriteLine("The average score is {0}.", averageScore);
代码解释:以上代码会依次执行以下步骤:
1. 定义一个整数类型的数组,并赋值。
2. 调用数组的Average()方法,并将结果赋值给一个double类型的变量averageScore。
3. 输出计算结果。
执行结果:输出结果为The average score is 79.2。
示例2
前置条件:我们有一个包含Student类型对象的List,需要根据这些学生的英语成绩计算平均值。
class Student
{
public string Name { get; set; }
public double English { get; set; }
public double Math { get; set; }
}
List<Student> students = new List<Student>()
{
new Student(){Name="Tom", English=85, Math=90},
new Student(){Name="Jerry", English=97, Math=88},
new Student(){Name="Mike", English=82, Math=78},
new Student(){Name="Lucy", English=78, Math=82},
};
double averageEnglishScore = students.Average(s => s.English);
Console.WriteLine("The average English score is {0}.", averageEnglishScore);
代码解释:以上代码会依次执行以下步骤:
1. 定义一个Student类型的List对象,并赋值。
2. 调用List的Average()方法,使用lambda表达式获取每个学生的英语成绩,计算平均值,并将结果赋值给一个double类型的变量averageEnglishScore。
3. 输出计算结果。
执行结果:输出结果为The average English score is 85.5。
总的来说,Average()方法是计算序列平均值的有效和高效的方法。它的灵活性使得它可以应用于各种数值类型,以及通过使用selector函数将其扩展到其他类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Linq的Average()方法 – 计算序列中元素的平均值 - Python技术站