# LINQ Aggregate Methods in C#

LINQ Aggregate methods help in various common calculations like getting average, count, sum etc of values in a collection. In C#, we have 6 LINQ Aggregate methods.

**Min()**: LINQ Aggregate Min method will give us lowest value in a collection.

**Max()**: LINQ Aggregate Max method will give us highest value in a collection.

**Average()**: LINQ Aggregate Average method will give us average of values in a collection.

**Sum()**: LINQ Aggregate Sum method will give us some of values in a collection.

**Count()**: LINQ Aggregate Count method will give us total number of items in a collection.

**Aggregate()**: This method is very useful, but quite tricky to understand. This method works in a looping manner and perform the calculation. This will take a delegate-based query as a parameter in the form of Lambda Expression. Aggregate method can be better understood with an example. Suppose you have 5 integer values in a collection and now you want to multiply them with each other in a sequence in which they have been placed. In such scenario, aggregate method will take first 2 values and multiply them and get the result. Now, it will take the result and multiply it with 3^{rd } value and get the new result. This process will be keep going on until it multiplies with the last value in the sequence and get the final result.

**LINQ Aggregate Example** is given below.

using System; using System.Linq; namespace Hello_World { class Program { static void Main(string[] args) { int[] numbers = { 10, 16, 19, 20, 21 }; string[] names = {"Robert", "Mark", "Rony", "Peter", "Jack"}; //Getting Min Value Console.WriteLine("Min Value: " + numbers.Min()); //Getting Max Value Console.WriteLine("Max Value: " + numbers.Max()); //Getting Average Value Console.WriteLine("Average Value: " + numbers.Average()); //Getting Sum Value Console.WriteLine("Sum Value: " + numbers.Sum()); //Getting Count Console.WriteLine("Count: " + numbers.Count()); //Getting Aggregate Value Console.WriteLine("Aggregate Value: " + numbers.Aggregate((x, y) => x * y)); //Getting Comma Separated string of names. Console.WriteLine("Aggregate Value: " + names.Aggregate((x, y) => x + ", "+ y)); } } }