Enumerable.Average
In
System.Linq
namespace
public static double Average(IEnumerable<int> source);
public static double Average(IEnumerable<long> source);
public static double Average(IEnumerable<float> source);
public static double Average(IEnumerable<double> source);
public static decimal Average(IEnumerable<decimal> source);
public static double? Average(IEnumerable<int?> source);
public static double? Average(IEnumerable<long?> source);
public static double? Average(IEnumerable<float?> source);
public static double? Average(IEnumerable<double?> source);
public static decimal? Average(IEnumerable<decimal?> source);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, int> selector);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, long> selector);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, float> selector);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, double> selector);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, decimal> selector);
public static TResult? Average<TSource>(IEnumerable<TSource> source, Func<TSource, int?> selector);
public static TResult? Average<TSource>(IEnumerable<TSource> source, Func<TSource, long?> selector);
public static TResult? Average<TSource>(IEnumerable<TSource> source, Func<TSource, float?> selector);
public static TResult? Average<TSource>(IEnumerable<TSource> source, Func<TSource, double?> selector);
public static TResult? Average<TSource>(IEnumerable<TSource> source, Func<TSource, decimal?> selector);
public static TResult Average<TSource>(IEnumerable<TSource> source, Func<TSource, TResult> selector) where TResult : struct;
Description
Computes the average of a sequence of numeric values.
There are overloads that accept an integer, long, float, double, or decimal value for each element in the sequence. Also, overloads are available that accept nullable numeric values. In these cases, null values are ignored.
There are also overloads that accept a transform function selector, which enables you to specify an integer, long, float, double, decimal, nullable integer, nullable long, nullable float, nullable double, or nullable decimal value to be returned from each element in the sequence.
Parameters
source
A sequence of values of the type for which to calculate the average.selector
A transform function to apply to each element.
Returns
- The average of the values in the sequence.
- A nullable numeric value that contains the average of the values in the sequence.
Exceptions
ArgumentNullException
source
is null.
Examples
Average of integers
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5 };
double average = numbers.Average();
Console.WriteLine($"Average: {average}"); // Output: Average: 3
}
}
Average of nullable integers, ignoring nulls
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main(string[] args)
{
int?[] numbersWithNulls = { 1, 2, null, 4, 5 };
double? average = numbersWithNulls.Average();
Console.WriteLine($"Average (ignoring nulls): {average}"); // Output: Average (ignoring nulls): 3
}
}
Average of object properties
using System;
using System.Collections.Generic;
using System.Linq;
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
List<Product> products = new List<Product>
{
new Product { Name = "Laptop", Price = 1200.50m },
new Product { Name = "Mouse", Price = 25.75m },
new Product { Name = "Keyboard", Price = 75.00m }
};
decimal averagePrice = products.Average(p => p.Price);
Console.WriteLine($"Average product price: {averagePrice}"); // Output: Average product price: 433.75
}
}