GroupBy C# with Example
GroupBy is an easy way to sort a IEnumerable collection of items into distinct groups. Simple Example In this first example, we end up with two groups, odd and even items. List iList = new List() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var grouped = iList.GroupBy(x => x % 2 == 0); //Groups iList into odd [13579] and even[2468] items foreach(var group in grouped) { foreach (int item in group) { Console.Write(item); // 135792468 (first odd then even) } } More Complex Example Let's take grouping a list of people by age as an example. First, we'll create a Person object which has two properties, Name and Age. public class Person { public int Age {get; set;} public string Name {get; set;} } Then we create our sample list of people with various names and ages. List people = new List(); people.Add(new Person{Age = 20, Name = "Mouse"}); people.Add(new Person{Age = 30, Name = "Neo"}); people.Add(new Person{Age = 40, Name = "Morpheus"}); people.Add(new Person{Age = 30, Name = "Trinity"}); people.Add(new Person{Age = 40, Name = "Dozer"}); people.Add(new Person{Age = 40, Name = "Smith"}); Then we create a LINQ query to group our list of people by age. var query = people.GroupBy(x => x.Age); Doing so, we can see the Age for each group, and have a list of each person in the group. foreach(var result in query) { Console.WriteLine(result.Key); foreach(var person in result) Console.WriteLine(person.Name); } This results in the following output: 20 Mouse 30 Neo Trinity 40 Morpheus Dozer Smith You can play with the live demo on .NET Fiddle