C# OrderByDescending

Descending: sort order

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

Tuple: type name

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.

TupleLambdas

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

Based on:

.NET 4.5

Program that uses OrderByDescending: C#

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);
	}
    }
}

Output

(6, 4)
(3, 6)
(0, 60)
Lambda expression syntax

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.

Descending

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

Research

Books

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

LINQ: keywords

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

C#: LINQ