Subscribe to our YouTube Channel for more Videos

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 .

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 πŸ™‚