C# OrderByDescending

OrderByDescending sorts elements from high to low. It is an extension method found in the System.Linq namespace. It receives a key selector Func instance. We pass it a lambda expression that selects the key.

FuncExtension Method

Example. Let us first create an array of Tuples. You can see that each Tuple has two 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.

Based on:

.NET 4.5

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)


(6, 4)
(3, 6)
(0, 60)

This extension method is useful in some situations. But it is probably most 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.

Research. I checked the C# specification for details about the descending keyword in queries. When we use "descending," a call of OrderByDescending is added to the translated, method-call syntax.

If an ordering clause specifies a descending direction indicator, an invocation of OrderByDescending or ThenByDescending is produced instead.

The C# Programming Language

Summary. OrderByDescending, a method, is sometimes useful. It requires a Func instance that selects a key. This method is commonly used through the translation of query expressions with the orderby and descending keywords.

OrderBy Clause