C# OrderBy, OrderByDescending ExamplesUse OrderBy and OrderByDescending from System.Linq. Specify the value to be sorted with a lambda.
dot net perls

OrderByDescending. This sorts elements from high to low. It is an extension method found in the System.Linq namespace. It receives a key selector Func instance.



Notes, usage. We pass OrderByDescending a lambda expression that selects the key. The OrderBy method actually means OrderByAscending, as it sorts from low to high.

OrderByDescending example. Here, each Tuple has 2 items of type int. Next, we call OrderByDescending and use a lambda expression that selects the Item1 property of each Tuple instance.



Finally We see that the Tuples are sorted from the highest Item1 value to the lowest Item1 value.

Info A reverse sort (a descending sort) is performed. Using descending sorts is usually faster than using a separate reverse pass.

C# program that uses OrderByDescending
using System; using System.Linq; class Program { static void Main() { // Create array of tuples. Tuple<int, int>[] tuples = new Tuple<int, int>[3]; tuples[0] = new Tuple<int, int>(3, 6); tuples[1] = new Tuple<int, int>(6, 4); tuples[2] = new Tuple<int, int>(0, 60); // Order by descending on Item1. var result = tuples.OrderByDescending(a => a.Item1); foreach (var item in result) { Console.WriteLine(item); } } }
(6, 4) (3, 6) (0, 60)

OrderBy example. OrderBy specifies how a collection should be ordered. It is an extension method. We can invoke OrderBy on any collection that implements IEnumerable.


Lambda This matches the signature of Func as the argument. On the right side of the lambda, we reverse each string to get the sort key.


String Literal

Info We convert to an array with ToCharArray, Reverse the chars, convert to an array with ToArray, and create a string from that array.




String Constructor

Finally The result (of type IOrderedEnumerable) consists of the 4 strings sorted by their characters considered in reverse order.

C# program that uses OrderBy extension method
using System; using System.Linq; class Program { static void Main() { // Input array. string[] array = { "the", "glass", "bead", "game" }; // Order alphabetically by reversed strings. var result = array.OrderBy(a => new string(a.ToCharArray().Reverse().ToArray())); // Display results. foreach (var item in result) { Console.WriteLine(item); } } }
bead the game glass

A discussion. OrderBy and OrderByDescending are often used by the C# compiler when it translates query expressions with the descending contextual keyword.


Tip Because query expressions do not require explicit delegate syntax (such as lambda expressions =>) they can be easier to read.

A summary. These 2 methods are sometimes useful. But most often they are used in the translation of query expressions with the orderby and descending keywords.

© 2007-2021 sam allen. send bug reports to info@dotnetperls.com.