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
    }
}