Export (0) Print
Expand All

Sorting Data

A sorting operation orders the elements of a sequence based on one or more attributes. The first sort criterion performs a primary sort on the elements. By specifying a second sort criterion, you can sort the elements within each primary sort group.

The following illustration shows the results of an alphabetical sort operation on a sequence of characters.

LINQ Sorting Operation

The standard query operator methods that sort data are listed in the following section.

Method Name

Description

C# Query Expression Syntax

Visual Basic Query Expression Syntax

More Information

OrderBy

Sorts values in ascending order.

orderby

Order By

Enumerable.OrderBy

Queryable.OrderBy

OrderByDescending

Sorts values in descending order.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending

Queryable.OrderByDescending

ThenBy

Performs a secondary sort in ascending order.

orderby …, …

Order By …, …

Enumerable.ThenBy

Queryable.ThenBy

ThenByDescending

Performs a secondary sort in descending order.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending

Queryable.ThenByDescending

Reverse

Reverses the order of the elements in a collection.

Not applicable.

Not applicable.

Enumerable.Reverse<TSource>

Queryable.Reverse<TSource>

Primary Sort Examples

Primary Ascending Sort

The following example demonstrates how to use the orderby (Order By in Visual Basic) clause in a LINQ query to sort the strings in an array by string length, in ascending order.



            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                brown
                jumps
            */



Primary Descending Sort

The next example demonstrates how to use the orderby descending (Order By Descending in Visual Basic) clause in a LINQ query to sort the strings by their first letter, in descending order.



            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Substring(0, 1) descending
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                quick
                jumps
                fox
                brown
            */



Secondary Sort Examples

Secondary Ascending Sort

The following example demonstrates how to use the orderby (Order By in Visual Basic) clause in a LINQ query to perform a primary and secondary sort of the strings in an array. The strings are sorted primarily by length and secondarily by the first letter of the string, both in ascending order.



            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1)
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                fox
                the
                brown
                jumps
                quick
            */



Secondary Descending Sort

The next example demonstrates how to use the orderby descending (Order By Descending in Visual Basic) clause in a LINQ query to perform a primary sort, in ascending order, and a secondary sort, in descending order. The strings are sorted primarily by length and secondarily by the first letter of the string.



            string[] words = { "the", "quick", "brown", "fox", "jumps" };

            IEnumerable<string> query = from word in words
                                        orderby word.Length, word.Substring(0, 1) descending
                                        select word;

            foreach (string str in query)
                Console.WriteLine(str);

            /* This code produces the following output:

                the
                fox
                quick
                jumps
                brown
            */



Community Additions

ADD
Show:
© 2014 Microsoft