Average notes. 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.
Example. First, add the "using System.Linq" directive to include the LINQ namespace. The Average method implementation is stored in the System.Core.dll file.
Tip The Average method looks like an instance method when called, but it is not. It is an extension method.
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
Overload, lambda. 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.
Here We use the Average method parameter to specify a function that will select a value from an existing sequence.
Tip The lambda expression extracts the length of the strings and then averages those values.
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
Internals. How does Average() work? If you provide a selector parameter to Average, the method internally calls the Select extension method first.
Then On that result, Average() checks the parameter for null, uses a foreach-loop, and divides the total value by the count.
Summary. 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.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Nov 29, 2023 (edit link).