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

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:

  1. Sort(IComparer<T>)
  2. Sort(Int32, Int32, IComparer)
  3. Sort()
  4. Sort(Comparison<T>)


Here, we will discuss the first two methods.

Sort(IComparer<T>) Method

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the concept of 
// List<T>.Sort(IComparer <T>) method
using 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);
              
        }
    }
}

chevron_right


Output:

Original List
1
5
6
2
4
3

Sort with a comparer:
1
2
3
4
5
6

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the concept of 
// List<T>.Sort(IComparer <T>) method
using 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);
        }
    }
}

chevron_right


Output:

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
List<T>.Sort(Int32, Int32, IComparer<T>) Method

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the use of 
// List<T>.Sort(Int32, Int32, IComparer<T>)
// Method
using 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);
        }
    }
}

chevron_right


Output:

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:



My Personal Notes arrow_drop_up

2nd year student of Information Technology JADAVPUR UNIVERSITY

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.