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 🙂

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

5 Comments

  1. 3 ways to Sort in Descending order via lambdas | .NET and C# | Syngu September 11, 2011 Reply
  2. CSharp Questions September 11, 2011 Reply
    • Senthil Kumar September 13, 2011 Reply
  3. Jon September 12, 2011 Reply
    • Senthil Kumar September 13, 2011 Reply
  4. d September 13, 2011 Reply
  5. 3 ways to Sort in Descending order via lambdas | ProgramInDotnet October 23, 2011 Reply

Leave a Reply


x

Interesting BlogPosts to read

How to get an Enumerator from range of elements from ArrayList in C# ?
The code snippet shown in this blog post demonstrates how you can get the enumeraor from a range of ...
How to check for the column name in an SqlDataReader Object in C# ?
When working in ADO.NET for data access , there are times when you want to check to see if a column ...
Column Alias and Square brackets in SQL Query.
When we want to specify a alias for a column in SQL Query , we tend to use the double quotes or sing...