HomeCSharp3 ways to Sort in Descending order via lambdas

3 ways to Sort in Descending order via lambdas

In C# , One can sort the List of Objects using Lambdas easily . Until now , i found the LINQ Query to be more easy to sort but after using the Lamba expression , I feel that the lambda expression can also be used effectively to sort in descending order .

For example , i use the below class for the data

public class Movie
{
   public string MovieName { get; set; }
   public string Actor { get; set; }
}
public class Movies : List<Movie>{
public Movies()
{  Add(new Movie { MovieName = "Endhiran", Actor = "Rajnikanth" });
   Add(new Movie { MovieName = "Velayutham", Actor = "Vijay" });
   Add(new Movie { MovieName = "Mankatha", Actor = "Ajith" });
   Add(new Movie { MovieName = "Nanban", Actor = "Vijay" });
   Add(new Movie { MovieName = "Kaavalan", Actor = "Vijay" });
}

}

To sort the Movie List in descending order by Actor , we can use the below LINQ Query

List movieList = new Movies();
var movies = (from movie in  movieList
orderby movie.Actor descending
select movie).ToList();
dataGridView1.DataSource = movies;

How do i use the Lambdas to sort the same list in descending order ? Its simple . There are different ways that one can use the lambdas to sort the list in descending .

3 ways to Sort in Descending order via lambdas in C#

1. Sorting the List in Ascending order via Lambda and then using the Reverse method of the List

List movieList = new Movies();
movieList.Sort((x, y) => x.Actor.CompareTo(y.Actor));
movieList.Reverse();
dataGridView1.DataSource = movieList;

2. Use the same sort method of the List but specify the minus symbol (-) while sorting

List movieList = new Movies();
movieList.Sort((x, y) => -x.Actor.CompareTo(y.Actor));
dataGridView1.DataSource = movieList;

When you use the + symbol instead of – , we get the list sorted in ascending order

3. Another simple way is to interchange the Comparer and CompareTo values like below

List movieList = new Movies();
movieList.Sort((x, y) => y.Actor.CompareTo(x.Actor));
dataGridView1.DataSource = movieList;

Definitely Learnt something today , seems like i need to learn more of the lambdas which i feel is simplifying lot of things 🙂

Leave A Reply

Your email address will not be published. Required fields are marked *

You May Also Like

This C# program calculates and displays an upper triangular matrix based on user input. Problem Statement: The program takes the...
This C# program serves as a demonstration of bitwise operators, which are fundamental operators used for manipulating individual bits in...
This C# program is designed to interchange or swap the columns of a matrix. A matrix is a two-dimensional array...