...

/

GroupBy and OrderBy Methods

GroupBy and OrderBy Methods

Learn how to group and order the elements of a collection using GroupBy and OrderBy methods.

How to group elements of a collection

The GroupBy method groups the elements of a collection based on a grouping key. This method returns a collection of groups, or buckets, organized by that key.

For example, let’s group our movies by rating.

Press + to interact
using System;
using System.Collections.Generic;
using System.Linq;
namespace MovieCatalog
{
internal class Program
{
public static void Main(string[] args)
{
var movies = new List<Movie>
{
new Movie("Titanic", 1998, 4.5f),
new Movie("The Fifth Element", 1997, 4.6f),
new Movie("Terminator 2", 1991, 4.7f),
new Movie("Avatar", 2009, 5),
new Movie("Platoon", 1986, 4),
new Movie("My Neighbor Totoro", 1988, 5)
};
var groupedByRating = movies.GroupBy(movie => movie.Rating);
foreach (var group in groupedByRating)
{
Console.WriteLine($"Rating: {group.Key}");
foreach (var movie in group)
{
Console.WriteLine($"{movie.Name}");
}
Console.WriteLine();
}
}
}
internal class Movie
{
public Movie(string name, int releaseYear, float rating)
{
Name = name;
ReleaseYear = releaseYear;
Rating = rating;
}
public string Name { get; set; }
public int ReleaseYear { get; set; }
public float Rating { get; set; }
}
}

The GroupBy method receives as a parameter a delegate with a property to use as a key when grouping elements. In our previous example, we used the Rating and wrote movie => movie.Rating.

The result of GroupBy is a collection of groups or buckets. In our example, the type of the return collection was IEnumerable<IGrouping<float, Movie>>. That’s why we needed two foreach loops to print the movies in each group. One to print the ratings ...