Grouping Data (C#)

Grouping refers to the operation of putting data into groups so that the elements in each group share a common attribute.

The following illustration shows the results of grouping a sequence of characters. The key for each group is the character.

Diagram that shows a LINQ Grouping operation.

The standard query operator methods that group data elements are listed in the following section.

Methods

Method Name Description C# Query Expression Syntax More Information
GroupBy Groups elements that share a common attribute. Each group is represented by an IGrouping<TKey,TElement> object. group … by

-or-

group … by … into …
Enumerable.GroupBy

Queryable.GroupBy
ToLookup Inserts elements into a Lookup<TKey,TElement> (a one-to-many dictionary) based on a key selector function. Not applicable. Enumerable.ToLookup

Query Expression Syntax Example

The following code example uses the group by clause to group integers in a list according to whether they are even or odd.

List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };  
  
IEnumerable<IGrouping<int, int>> query = from number in numbers  
                                         group number by number % 2;  
  
foreach (var group in query)  
{  
    Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");  
    foreach (int i in group)  
        Console.WriteLine(i);  
}  
  
/* This code produces the following output:  
  
    Odd numbers:  
    35  
    3987  
    199  
    329  
  
    Even numbers:  
    44  
    200  
    84  
    4  
    446  
    208  
*/  

See also