A descending sort goes from high to low. For C# strings it goes from the last alphabetical string
to the first.
In a query expression, we use descending and ascending to indicate sort order. Ascending goes from low to high. These C# keywords encourage elegant and clear code.
This program specifies a query expression (starting with from). The parts of query expressions that contain these keywords are query clauses.
orderby
clause here is translated into a method call to OrderByDescending
.foreach
, the query expression is evaluated and sorted. The int
array elements are now ordered from largest to smallest.using System; using System.Linq; // Part 1: create an integer array. int[] array = { 1, 3, 5, 7, 9 }; // Part 2: select the elements in a descending order with query clauses. var result = from element in array orderby element descending select element; // Part 3: evaluate the query and display the results. foreach (var element in result) { Console.WriteLine($"DESCENDING: {element}"); }DESCENDING: 9 DESCENDING: 7 DESCENDING: 5 DESCENDING: 3 DESCENDING: 1
There is an ascending keyword that can be used in the same context as the descending keyword (following an orderby
clause). Ascending sorts are normally the default.
orderby
clauses in your query expressions.using System; using System.Linq; class Employee { public int Salary { get; set; } public int Id { get; set; } } class Program { static void Main() { Employee[] array = new Employee[] { new Employee(){Salary = 40000, Id = 4}, new Employee(){Salary = 40000, Id = 0}, new Employee(){Salary = 60000, Id = 7}, new Employee(){Salary = 60000, Id = 9} }; // Highest salaries first. // ... Lowest IDs first. var result = from em in array orderby em.Salary descending, em.Id ascending select em; foreach (var em in result) Console.WriteLine("{0}, {1}", em.Salary, em.Id); } }60000, 7 60000, 9 40000, 0 40000, 4
Query expressions provide an intuitive syntax for sorting on 2 properties at once. The first property specified in the orderby
clause is the primary sort.
Because ascending is the default, you don't need to specify it. You can just omit this keyword and the query expression will function the same way.
The descending keyword is only considered a keyword in certain cases. The C# compiler provides a special-cased parser for query expressions.
Descending and ascending indicate the progression of an orderby
clause in a query expression. The query clause is translated to method syntax before being executed.