;

# Sorting Operators: ThenBy & ThenByDescending

In this tutorial, we will learn about sorting operator - ThenBy & ThenByDescending in LINQ

## Sorting Operator

In LINQ, sorting operators are used to sort the data from the collection in a specific order such as in ascending or descending order. In this tutorial, we will learn about the sorting operator - ThenBy & ThenByDescending.

The `ThenBy` &` ThenByDescending` both are extension methods used for sorting collection in ascending or descending order on multiple fields.

The` ThenBy `method is used to sort the collection in ascending order whereas the `ThenByDescending `method is used to sort the collection in descending order.

The `ThenBy` or `ThenByDescending` method can be used more than once in the same LINQ query.

## ThenBy

The `OrderBy()` extension method is used for sorting the collection in an ascending order on a specified field. If you want to sort the collection on secondary fields also, use the `ThenBy() `extension method after the `OrderBy()` extension method which sorts the collection in ascending order based on another field.

## ThenByDescending

If you want to sort the collection in descending order on secondary fields, use the `ThenByDescending() `extension method after the `OrderBy()` or `OrderByDescending()` extension method which sorts the collection in descending order based on a secondary field.

## Examples of Sorting Filter - ThenBy and ThenByDescending

### Example 1: ThenBy & ThenByDescending - Method Syntax

##### Example 1: ThenBy & ThenByDescending - Method Syntax
``````using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqPrograms
{
internal class Program
{
public static void Main(string[] args)
{
// Employee collection
IList<Employee> employeelist = new List<Employee>() {
new Employee() { EmpID = 1, EmpName = "John", City = "New York", Salary = 130000} ,
new Employee() { EmpID = 2, EmpName = "Moin", City = "New Orleans", Salary = 210000 } ,
new Employee() { EmpID = 3, EmpName = "Bill", City = "Seattle", Salary = 180000 } ,
new Employee() { EmpID = 4, EmpName = "Ram" , City = "Delhi", Salary = 200000} ,
new Employee() { EmpID = 5, EmpName = "Ron" , City = "San Jose", Salary = 150000 },
new Employee() { EmpID = 6, EmpName = "Bill" , City = "Chicago", Salary = 250000 }
};

// LINQ Method Syntax to sort an Employee
// in a ascending Order based on multiple
// fields like EmpName, Salary
Console.WriteLine("--Employee Data Sorted on Multiple Field in Ascending Order--");
var ThenByResult = employeelist
.OrderBy(x => x.EmpName)
.ThenBy(y => y.Salary);

foreach (var emp in ThenByResult)
{
Console.WriteLine(\$"EmpId = {emp.EmpID}; EmpName = {emp.EmpName}; City = {emp.City}; Salary = {emp.Salary}");
}

Console.WriteLine();

// LINQ Method Syntax to sort an Employee
// first in an ascending order based on EmpName, then,
// in a Descending Order based on secondary
// fields like Salary
Console.WriteLine("--Employee Data Sorted on Multiple Field First in Ascending, then Descending Order--");
var orderByDescendingResult = employeelist
.OrderBy(x => x.EmpName)
.ThenByDescending(y => y.Salary);

foreach (var emp in orderByDescendingResult)
{
Console.WriteLine(\$"EmpId = {emp.EmpID}; EmpName = {emp.EmpName}; City = {emp.City}; Salary = {emp.Salary}");
}

}

}

public class Employee
{
public int EmpID { get; set; }
public string EmpName { get; set; }
public string City { get; set; }
public int Salary { get; set; }
}

}
``````
##### Output
`--Employee Data Sorted on Multiple Field in Ascending Order--EmpId = 3; EmpName = Bill; City = Seattle; Salary = 180000EmpId = 6; EmpName = Bill; City = Chicago; Salary = 250000EmpId = 1; EmpName = John; City = New York; Salary = 130000EmpId = 2; EmpName = Moin; City = New Orleans; Salary = 210000EmpId = 4; EmpName = Ram; City = Delhi; Salary = 200000EmpId = 5; EmpName = Ron; City = San Jose; Salary = 150000--Employee Data Sorted on Multiple Field First in Ascending, then Descending Order--EmpId = 6; EmpName = Bill; City = Chicago; Salary = 250000EmpId = 3; EmpName = Bill; City = Seattle; Salary = 180000EmpId = 1; EmpName = John; City = New York; Salary = 130000EmpId = 2; EmpName = Moin; City = New Orleans; Salary = 210000EmpId = 4; EmpName = Ram; City = Delhi; Salary = 200000EmpId = 5; EmpName = Ron; City = San Jose; Salary = 150000`

Learn Sorting Operator - Reverse in the next tutorial.