The C# Average()
method is an extension method. It computes the average value using only one statement. Often we combine it with other LINQ methods.
This method provides a declarative way to compute the average value of a sequence in the C# language. We can use Average()
with no argument, or pass in a lambda expression.
First, add the "using System.Linq
" directive to include the LINQ namespace. The Average()
method implementation is stored in the System.Core.dll
file.
Average()
method looks like an instance method when called, but it is not. It is an extension method.double
array collection.using System; using System.Linq; // Use Average to compute average value. double[] array = { 1, 2, 3, 5, 0 }; double average = array.Average(); Console.WriteLine("AVERAGE: {0}", average);AVERAGE: 2.2
There are more overloads to Average()
. We can select the values we want to average from another collection with a selector delegate. We can pass a lambda expression.
Average()
method parameter to specify a function that will select a value from an existing sequence.using System; using System.Linq; // Use Average to compute average string length. string[] array = { "dog", "cat", "perls" }; double average = array.Average(x => x.Length); Console.WriteLine("AVERAGE: {0}", average);AVERAGE: 3.66666666666667
How does Average()
work? If you provide a selector parameter to Average, the method internally calls the Select()
extension method first.
Average()
checks the parameter for null
, uses a foreach
-loop, and divides the total value by the count.Average()
extension method will throw an exception if it divides by zero.for
-loop approach.You can use Average()
to compute the average value of a collection of numbers. And you can combine the Average()
extension with a Func
selector. This will internally Select()
elements.