C#: LINQ

.NET Array Collections File String Async Cast DataTable DateTime Dictionary Enum Exception For Foreach IEnumerable If IndexOf Lambda LINQ List Parse Path Process Property Regex Replace Sort Split StringBuilder Substring Switch Tuple

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.

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)
	{
	    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