In Linq, sorting operators are used when we have to change the sequence or order of the data. i.e. Ascending sort or Descending sort. There are many sorting operators like OrderBy(), OrderByDescending(), ThenBy(), ThenByDescending() etc.Each has its unique use.

Linq OrderBy operator

It is used to order the data in ascending order and it is the default sort done by it.

Syntax:

var data = user.OrderBy(x => x.UserId);

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21 },
                new User() { UserId = 5, Name = "Irshad", Age = 18 },
                new User() { UserId = 4, Name = "Bhavdip", Age = 28 },
                new User() { UserId = 2, Name = "Kaushik", Age = 28 },
                new User() { UserId = 3, Name = "Kirti", Age = 25 }
            };
            var data = user.OrderBy(x => x.UserId);
            foreach (var item in data)
            {
                Console.WriteLine("The User name is {0} ID is {1} Age is {2}", item.Name, item.UserId, item.Age);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}

As you can see all the data are in ascending order and sorted by UserId

Output:

The User name is Faisal ID is 1 Age is 21
The User name is Kaushik ID is 2 Age is 28
The User name is Kirti ID is 3 Age is 25
The User name is Bhavdip ID is 4 Age is 28
The User name is Irshad ID is 5 Age is 18

Linq OrderByDescending operator

This is used to order the data in descending order

Syntax:

var data = user.OrderByDescending(x => x.UserId);

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21 },
                new User() { UserId = 5, Name = "Irshad", Age = 18 },
                new User() { UserId = 4, Name = "Bhavdip", Age = 28 },
                new User() { UserId = 2, Name = "Kaushik", Age = 28 },
                new User() { UserId = 3, Name = "Kirti", Age = 25 }
            };
            var data = user.OrderByDescending(x => x.UserId);
            foreach (var item in data)
            {
                Console.WriteLine("The User name is {0} ID is {1} Age is {2}", item.Name, item.UserId, item.Age);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}

Output:

The User name is Irshad ID is 5 Age is 18
The User name is Bhavdip ID is 4 Age is 28
The User name is Kirti ID is 3 Age is 25
The User name is Kaushik ID is 2 Age is 28
The User name is Faisal ID is 1 Age is 21

LINQ ThenBy Sorting Operator

In Linq, ThenBy operator is used to implementing sorting on multiple fields. It will sort the fields in ascending order by default. Generally, it is used with OrderBy operator to implement multiple fields sorting.

If we want to perform sorting on more than one field then we use the ThenBy operator.

Syntax:

var data = user.OrderBy(x => x.Age).ThenBy(x=>x.UserId);

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21 },
                new User() { UserId = 5, Name = "Irshad", Age = 18 },
                new User() { UserId = 4, Name = "Bhavdip", Age = 28 },
                new User() { UserId = 2, Name = "Kaushik", Age = 28 },
                new User() { UserId = 3, Name = "Kirti", Age = 25 }
            };
            var data = user.OrderBy(x => x.Age).ThenBy(x=>x.UserId);
            foreach (var item in data)
            {
                Console.WriteLine("The User name is {0} ID is {1} Age is {2}", item.Name, item.UserId, item.Age);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}

Output:

The User name is Irshad ID is 5 Age is 18
The User name is Faisal ID is 1 Age is 21
The User name is Kirti ID is 3 Age is 25
The User name is Kaushik ID is 2 Age is 28
The User name is Bhavdip ID is 4 Age is 28

LINQ ThenByDescending Sorting Operator

In Linq, ThenByDescending operator is used to implementing sorting on multiple fields. It will sort the fields in Descending order by default. Generally, it is used with OrderBy operator to implement multiple fields sorting.

If we want to perform sorting on more than one field then we use the ThenBy operator.

Syntax:

var data = user.OrderByDescending(x => x.Age).ThenBy(x=>x.UserId);

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21 },
                new User() { UserId = 5, Name = "Irshad", Age = 18 },
                new User() { UserId = 4, Name = "Bhavdip", Age = 28 },
                new User() { UserId = 2, Name = "Kaushik", Age = 28 },
                new User() { UserId = 3, Name = "Kirti", Age = 25 }
            };
            var data = user.OrderByDescending(x => x.Age).ThenBy(x=>x.UserId);
            foreach (var item in data)
            {
                Console.WriteLine("The User name is {0} ID is {1} Age is {2}", item.Name, item.UserId, item.Age);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}

Output:

The User name is Irshad ID is 5 Age is 18
The User name is Faisal ID is 1 Age is 21
The User name is Kirti ID is 3 Age is 25
The User name is Bhavdip ID is 4 Age is 28
The User name is Kaushik ID is 2 Age is 28