How to sort a list in C# | List.Sort() Method Set -1

12 Feb, 2019
List<T>.Sort() Method is used to sort the elements or a portion of the elements in the List<T> using either the specified or default IComparer<T> implementation or a provided Comparison<T> delegate to compare list elements. There are total 4 methods in the overload list of this method as follows:
Sort(IComparer<T>)Sort(Int32, Int32, IComparer)Sort()Sort(Comparison<T>)
Sort(IComparer<T>)
Sort(Int32, Int32, IComparer)
Sort()
Sort(Comparison<T>)
Here, we will discuss the first two methods.
This method is used to sort the elements in the entire List<T> using the specified comparer.
Syntax:
public void Sort (System.Collections.Generic.IComparer<T> comparer);
Here, the comparer is the IComparer<T> implementation to use when comparing elements, or null to use the default comparer Default.
Exceptions:
InvalidOperationException: If the comparer is null, and the default comparer Default cannot find the implementation of the IComparable<T> generic interface or the IComparable interface for type T.
ArgumentException: If the implementation of comparer caused an error during the sort. For example, comparer might not return 0 when comparing an item with itself.
Example 1:
// C# program to demonstrate the concept of // List<T>.Sort(IComparer <T>) methodusing System;using System.Collections.Generic;  class GFG : IComparer<int>{    public int Compare(int x, int y)    {        if (x == 0 || y == 0)        {            return 0;        }                  // CompareTo() method        return x.CompareTo(y);              }}  public class geek{          // Main Method    public static void Main()    {                  // List initialize        List<int> list1 = new List<int>        {                          // list elements            1,5,6,2,4,3                  };          Console.WriteLine("Original List");                  foreach(int g in list1)        {                          // Display Original List            Console.WriteLine(g);                      }                  // "gg" is the object oif class GFG        GFG gg = new GFG();                  Console.WriteLine("\nSort with a comparer:");                  // use of List<T>.Sort(IComparer<T>)         // method. The comparer is "gg"        list1.Sort(gg);                  foreach( int g in list1 )        {                          // Display sorted list            Console.WriteLine(g);                      }    }}
Original List
1
5
6
2
4
3

Sort with a comparer:
1
2
3
4
5
6

Example 2:
// C# program to demonstrate the concept of // List<T>.Sort(IComparer <T>) methodusing System;using System.Collections.Generic;  class GFG : IComparer<string>{    public int Compare(string x, string y)    {                  if (x == null || y == null)        {            return 0;        }                  // "CompareTo()" method        return x.CompareTo(y);              }}  public class geek{          // Main Method    public static void Main()    {        List<string> list1 = new List<string>();                  // list elements        list1.Add("A");        list1.Add("I");        list1.Add("G");        list1.Add("B");        list1.Add("E");        list1.Add("H");        list1.Add("F");        list1.Add("C");        list1.Add("J");          Console.WriteLine("Original List");                  // Display Original List        Display(list1);                  // "gg" is the object        GFG gg = new GFG();              Console.WriteLine("\nSort with a comparer:");                  // sort the list with a         // specified comparer "gg"        list1.Sort(gg);                  // Display sorted List        Display(list1);                  Console.WriteLine("\nBinarySearch and Insert D");          // Binary Search for "D"        // using List.BinarySearch(T) method        int index = list1.BinarySearch("D");          if (index < 0)        {                          // range++;            list1.Insert(~index, "D");                      }          // Display the List after        // inserting "D"        Display(list1);              }          // Display function    public static void Display(List<string> list)    {        foreach( string g in list )        {            Console.WriteLine(g);        }    }}
Original List
A
I
G
B
E
H
F
C
J

Sort with a comparer:
A
B
C
E
F
G
H
I
J

BinarySearch and Insert D
A
B
C
D
E
F
G
H
I
J

This method is used to sort the elements in a range of elements in List<T> using the specified comparer.
Syntax:
public void Sort(int index, int len, IComparer<T> comparer)
Parameters:
index : It is the zero-based starting index of the range in which sort will happen.
len : It is the length of the range.
comparer : When comparing elements then use the IComparer implementation or null to use the default comparer Default.
Exceptions:
ArgumentOutOfRangeException : If indexor len is less than 0.
ArgumentException : If index and count do not specify a valid range in the List.
InvalidOperationException : If comparer is null.
Example:
// C# program to demonstrate the use of // List<T>.Sort(Int32, Int32, IComparer<T>)// Methodusing System;using System.Collections.Generic;  class GFG : IComparer<string>{    public int Compare(string x, string y)    {        if (x == null || y == null)        {            return 0;        }                  // "CompareTo()" method        return x.CompareTo(y);              }}  public class geek{    public static void Main()    {        List<string> list1 = new List<string>();                  // list elements        list1.Add("C++");        list1.Add("Java");        list1.Add("C");        list1.Add("Python");        list1.Add("HTML");        list1.Add("CSS");        list1.Add("Scala");        list1.Add("Ruby");        list1.Add("Perl");          int range = 4;        Console.WriteLine("Original List");                  // Display Original List        Display(list1);                  // "gg" is the object        GFG gg = new GFG();                  Console.WriteLine("\nSort a range with comparer:");                  // sort the list within a         // range of index 1 to 4        // where range = 4        list1.Sort(1, range, gg);                  // Display sorted List        Display(list1);                  Console.WriteLine("\nBinarySearch and Insert Dart");          // Binary Search and storing         // index value to "index"        int index = list1.BinarySearch(0, range,                                    "Dart", gg);                  if (index < 0)        {            list1.Insert(~index, "Dart");            range++;        }          // Display the List         // after inserting "Dart"        Display(list1);              }          // Display function    public static void Display(List<string> list)    {        foreach(string g in list)        {            Console.WriteLine(g);        }    }}
Original List
C++
Java
C
Python
HTML
CSS
Scala
Ruby
Perl

Sort a range with comparer:
C++
C
HTML
Java
Python
CSS
Scala
Ruby
Perl

BinarySearch and Insert Dart
C++
C
Dart
HTML
Java
Python
CSS
Scala
Ruby
Perl

Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort?view=netframework-4.7.2
CSharp-Generic-List
CSharp-Generic-Namespace
CSharp-method
Picked
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.