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

22 Sep, 2021
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, the first two methods are discussed in Set – 1. So, We will discuss the last two methods.
This method is used to sort the elements in the entire List<T> using the default comparer.
Syntax: public void Sort ();
Exception: This method will give InvalidOperationException if the default Comparer cannot find an implementation of the IComparable<T> generic interface or the IComparable interface for type T.
Example 1:
// C# program to demonstrate the // use of List<T>.Sort() methodusing System;using System.Collections.Generic;  class GFG {      // 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);        }          Console.WriteLine("\nSorted List");          // use of List<T>.Sort() method        list1.Sort();          foreach(int g in list1)        {              // Display sorted list            Console.WriteLine(g);        }    }}
Original List
1
5
6
2
4
3

Sorted List
1
2
3
4
5
6

Example 2:
// C# program to demonstrate the // use of List<T>.Sort() methodusing System;using System.Collections.Generic;  class GFG {      // 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("D");          Console.WriteLine("Original List");          // Display Original List        Display(list1);          Console.WriteLine("\nSorted List");          // use of List.Sort() method        list1.Sort();          // Display sorted List        Display(list1);    }      // Display function    public static void Display(List<string> list)    {        foreach(string g in list)        {            Console.Write(g + " ");        }    }}
Original List
A I G B E H F C D 
Sorted List
A B C D E F G H I

Example 3:
// C# program to demonstrate the// use of List<T>.Sort() methodusing System;using System.Collections.Generic;  public class GFG {      // Main Method    public static void Main()    {        // array elements        String[] list = {"C++", "Java", "C",                    "Python", "HTML", "CSS",                    "Scala", "Ruby", "Perl"};          var list1 = new List<String>();            // "AddRange" method to add the        // string array elements into the List        list1.AddRange(list);                    Console.WriteLine("List in unsorted order: ");        Display(list1);          Console.WriteLine(Environment.NewLine);          // using List.Sort() method        list1.Sort();                  Console.WriteLine("List in sorted order: ");        Display(list1);    }      // Display method    static void Display(List<string> list)    {        foreach(string g in list)        {            Console.Write(g + "\t");        }    }}
List in unsorted order: 
C++    Java    C    Python    HTML    CSS    Scala    Ruby    Perl    

List in sorted order: 
C    C++    CSS    HTML    Java    Perl    Python    Ruby    Scala

This method is used to sort the elements in the entire List<T> using the specified comparer.
Syntax: public void Sort (Comparison<T> comparison);
Parameter:comparison: It is the IComparer<T> implementation to use when comparing elements, or null to use the default comparer Default.
Exceptions:
ArgumentNullException: If the comparer is null, and the default comparer Default cannot find 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.
Below programs illustrate the use of the above-discussed method:
Example 1:
// C# program to demonstrate the use of // List<T>.Sort(comparison <T>) methodusing System;using System.Collections.Generic;  class GFG {      private static int Geek(string x,                            string y)    {        if (x == null) {              if (y == null) {                  // If x and y is null                // then they are equal                return 0;            }              else {                  // If x is null but y is not                // null then y is greater.                return -1;            }        }          else {              if (y == null) {                  return 1;            }              else {                  // If the strings are of equal length,                // sort them with string comparison.                return x.CompareTo(y);            }        }    }       // Main Method    public static void Main()    {        List<string> list1 = new List<string>();          // list elements        list1.Add("AB");        list1.Add("CD");        list1.Add("GH");        list1.Add("EF");        list1.Add("IJ");        list1.Add("KL");        Console.WriteLine("Original List :");          // displaying original list        Display(list1);                   Console.WriteLine("\nSort with generic Comparison object :");          // Sort(Comparison<t>) method        //"Geek" is Comparison object        list1.Sort(Geek);                  // displaying sorted list        Display(list1);             }      // display function    private static void Display(List<string> list)    {        foreach(string g in list)        {            Console.WriteLine(g);        }    }}
Original List :
AB
CD
GH
EF
IJ
KL

Sort with generic Comparison object :
AB
CD
EF
GH
IJ
KL

Example 2:
// C# program to demonstrate the use of// List<T>.Sort(comparison <T>) methodusing System;using System.Collections.Generic;  class GFG {      private static int Geek(int x, int y)    {        if (x == 0) {              if (y == 0) {                  // If x and y is null                // then they are equal                return 0;            }              else {                  // If x is null but y is not                 // null then y is greater.                return -1;            }        }          else {              if (y == 0) {                  return 1;            }              else {                  // If the strings are of equal length,                // sort them with string comparison.                return x.CompareTo(y);            }        }    }      public static void Main()    {        List<int> list1 = new List<int>();          // list elements        list1.Add(2);        list1.Add(5);        list1.Add(6);        list1.Add(4);        list1.Add(1);        list1.Add(3);          Console.WriteLine("Original List :");          // displaying original list        Display(list1);                  Console.WriteLine("\nSort with generic "+                          "Comparison object :");           // Sort(Comparison<t>) method        //"Geek" is Comparison object        list1.Sort(Geek);                 // displaying sorted list        Display(list1);         }      // display function    private static void Display(List<int> list)    {        foreach(int g in list)        {            Console.WriteLine(g);        }    }}
Original List :
2
5
6
4
1
3

Sort with generic Comparison object :
1
2
3
4
5
6

Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.sort?view=netframework-4.7.2
anikaseth98
CSharp-Generic-List
CSharp-Generic-Namespace
CSharp-method
C#
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C# Dictionary with examples
Introduction to .NET Framework
C# | Delegates
C# | Multiple inheritance using interfaces
Differences Between .NET Core and .NET Framework
C# | Method Overriding
C# | Data Types
C# | Constructors
C# | String.IndexOf( ) Method | Set - 1
C# | Class and Object