C# Linq的Average()方法 – 计算序列中元素的平均值

  • Post category:C#

下面是C# Linq中Average()的详细讲解。

Average()的介绍

Average()是C# Linq中的一个方法,用于计算集合中数值类型元素的平均值。

Average()的语法

Average()方法的语法如下:

public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
public static float Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
public static float? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
public static decimal? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
public static double Average(this IEnumerable<int> source);
public static double? Average(this IEnumerable<int?> source);
public static double Average(this IEnumerable<long> source);
public static double? Average(this IEnumerable<long?> source);
public static float Average(this IEnumerable<float> source);
public static float? Average(this IEnumerable<float?> source);
public static double Average(this IEnumerable<double> source);
public static double? Average(this IEnumerable<double?> source);
public static decimal Average(this IEnumerable<decimal> source);
public static decimal? Average(this IEnumerable<decimal?> source);

其中,selector参数表示集合中的每个元素经过selector处理后得到的数值类型,在不同的方法中对应不同的数值类型。

Average()的示例

下面是两个示例用来说明Average()方法的使用:

示例1:计算平均分数

假设有一个班级,有10个学生,每个学生的分数如下:

List<int> scores = new List<int> { 80, 70, 90, 85, 75, 95, 60, 50, 65, 55 };

我们可以使用Average()方法来计算这些分数的平均值:

double averageScore = scores.Average();

这样就得到了平均分数。如果想保留小数点后两位,可以使用toString()方法:

string averageScoreStr = averageScore.ToString("0.00");

示例2:计算多个数值类型的平均值

假设现在需要计算一组数据的平均值,这组数据包括整数、小数和空值,可以这样来处理:

List<int?> numbers = new List<int?> { 1, 2, null, 3, 4 };
List<double> doubles = new List<double> { 5.5, 6.6, 7.7, double.NaN, 8.8 };
List<decimal> decimals = new List<decimal> { 2.1m, 3.2m, 4.3m, 5.4m };

double? numberAverage = numbers.Average();
double doubleAverage = doubles.Average();
decimal decimalAverage = decimals.Average();

可以看到,对于数值类型集合中的空值,Average()方法会自动忽略。对于double类型集合中的NaN值,Average()方法会返回NaN。