Using Multiple Order By Clause in LINQ and Lambda Expression (C#)

The orderby keyword can be used in LINQ to retrieve the ordered list of records based on the specified field.

For example to order the list of movies , one might use the orderby as shown below in the LINQ query

var moviesLinq1 = (from m in movies
orderby m.Actor
select m).ToList();

How to use Multiple OrderBy Clause in LINQ and Lambda Expression?

In C# , the developers can specify the columns with the comma separator to define multiple order by clause .

Below is a sample example of the data to be ordered by where Movies contains the list of movie properties.

public class Movie
{
public string MovieName { get; set; }

public string Actor { get; set; }

public string Director { get; set; }

public string Boxoffice { get; set; }

}
public class Movies : List<Movie>
{

public Movies()

{

Add(new Movie { Actor = "Vijay", Director = "Murugadas", MovieName = "Thuppaki" });

Add(new Movie { Actor = "Ajith Kumar", Director = "Chakri", MovieName = "Billa 2" });

Add(new Movie { Actor = "Vijay", Director = "Shankar", MovieName = "Nanban" });

Add(new Movie { Actor = "Surya", Director = "KV Anand", MovieName = "Maatran" });

Add(new Movie { Actor = "Vijay", Director = "Jayam Raja", MovieName = "Velayutham" });

}

}

To use multiple orderby condition in LINQ , one can use the statement like the way shown below.

List<Movie> movies = new Movies();

var moviesLinq1 = (from m in movies

orderby m.Actor , m.MovieName

select m).ToList();

The same can be achieved via Lambda expression with the OrderBy and ThenBy methods like shown below.

List<Movie> movies = new Movies();

var moviesLamba1 = movies.OrderBy(m => m.Actor).ThenBy(m => m.MovieName).ToList();

If the developer wants to sort one of the columns by ascending order and other by descending . He/she can simply specify itas shown below.

// Using LINQ Query

var moviesLinq2 = (from m in movies

orderby m.Actor ascending, m.MovieName descending

select m).ToList();

// Using Lambda Expression

var moviesLamba2 = movies.OrderBy(m => m.Actor).ThenByDescending(m => m.MovieName).ToList();
Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Hey, wait!Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.