【C#】配列やリストを昇順や降順にソートする方法【Array, List】

【C#】配列やリストを昇順や降順にソートする方法

C# において、配列やリストの順番を昇順や降順に変更するには、Array.Sort メソッドや List<T>.Sort メソッド、または LINQ クラスの OrderByOrderByDescendingで実現可能です。

昇順とは

数の小さいものから大きいものへ進む順序のこと。1, 2, 3,… といった順番。

降順とは

数の大きいものから小さいものへ進む順序のこと。10, 9, 8,… といった順番。

本記事では、配列 (Array) やリスト (List) の順番を昇順や降順にソートする方法を紹介します。

配列を「昇順」ソートする方法

その1:Array.Sort

配列の昇順ソートには Array.Sortを使用します。

using System;
 
public class Sample
{
    public static void Main()
    {
        int[] numbers = { 3, 1, 4, 8, 5, 9, 2, 6, 7 };

        // 配列を昇順ソート
        Array.Sort(numbers);
        
        Console.WriteLine(string.Join(", ", numbers));
    }
}

実行結果

1, 2, 3, 4, 5, 6, 7, 8, 9

その2:OrderBy

LINQ クラスの Enumerable.OrderByを使えば配列の昇順ソートが可能です。

LINQ の使用にはコードの先頭で using System.Linq;の宣言が必要です。

using System;
using System.Collections.Generic;
using System.Linq;
 
public class Sample
{
    public static void Main()
    {
        int[] numbers = { 3, 1, 4, 8, 5, 9, 2, 6, 7 };

        // 配列を昇順ソート
        var sortedNumbers = numbers.OrderBy(i => i);
        
        Console.WriteLine(string.Join(", ", sortedNumbers));
    }
}

実行結果

1, 2, 3, 4, 5, 6, 7, 8, 9

配列を「降順」ソートする方法

その1:Array.Reverse

配列の降順ソートには、Array.SortArray.Reverseを使用します。

まず Array.Sort昇順ソートを行い、その後 Array.Reverse配列の順序を反転させています。

using System;
 
public class Sample
{
    public static void Main()
    {
        int[] numbers = { 3, 1, 4, 8, 5, 9, 2, 6, 7 };
        
        // 配列を昇順ソート
        Array.Sort(numbers);
        // 配列の順序を反転させる
        Array.Reverse(numbers);
        
        Console.WriteLine(string.Join(", ", numbers));
    }
}

実行結果

9, 8, 7, 6, 5, 4, 3, 2, 1

その2:OrderByDescending

LINQ クラスの Enumerable.OrderByDescendingを使えば配列の降順ソートが可能です。

LINQ の使用にはコードの先頭で using System.Linq;の宣言が必要です。

using System;
using System.Collections.Generic;
using System.Linq;
 
public class Sample
{
    public static void Main()
    {
        int[] numbers = { 3, 1, 4, 8, 5, 9, 2, 6, 7 };

        // 配列を降順ソート
        var sortedNumbers = numbers.OrderByDescending(i => i);
        
        Console.WriteLine(string.Join(", ", sortedNumbers));
    }
}

実行結果

9, 8, 7, 6, 5, 4, 3, 2, 1

リストを「昇順」ソートする方法

その1:List<T>.Sort

リストの昇順ソートList<T>.Sort メソッドで実現可能です。

using System;
using System.Collections.Generic;
 
public class Sample
{
    public static void Main()
    {
        var numberList = new List<int>() {3, 1, 4, 8, 5, 9, 2, 6, 7 };
        
        // リストを昇順ソート
        numberList.Sort();
        
        Console.WriteLine(string.Join(", ", numberList));
    }
}

実行結果

1, 2, 3, 4, 5, 6, 7, 8, 9

その2:OrderBy

LINQ クラスの Enumerable.OrderByを使えばリストの昇順ソートが可能です。

LINQ の使用にはコードの先頭で using System.Linq;の宣言が必要です。

using System;
using System.Collections.Generic;
using System.Linq;
 
public class Sample
{
    public static void Main()
    {
        var numberList = new List<int>() {3, 1, 4, 8, 5, 9, 2, 6, 7 };
        
        // リストを昇順ソート
        var sortedList = numberList.OrderBy(i => i).ToList();
        
        Console.WriteLine(string.Join(", ", sortedList));
    }
}

実行結果

1, 2, 3, 4, 5, 6, 7, 8, 9

リストを「降順」ソートする方法

その1:OrderByDescending

LINQ クラスの Enumerable.OrderByDescendingを使えばリストの降順ソートが可能です。

LINQ の使用にはコードの先頭で using System.Linq;の宣言が必要です。

using System;
using System.Collections.Generic;
using System.Linq;
 
public class Sample
{
    public static void Main()
    {
        var numberList = new List<int>() {3, 1, 4, 8, 5, 9, 2, 6, 7 };

        // リストを降順ソート
        var sortedList= numberList.OrderByDescending(i => i).ToList();
        
        Console.WriteLine(string.Join(", ", sortedList));
    }
}

実行結果

9, 8, 7, 6, 5, 4, 3, 2, 1

参考リンク

関連記事

C#で複数のリストを結合する3つの方法【C#】複数のリスト ( List ) を結合する3つの方法【C#】要素に重複のないリストを作成する3つの方法【C#】要素に重複のないリストを作成する3つの方法【List】【C#】enum の全要素を List に変換して 取得する方法【C#】enum(列挙型)の全要素を List に変換して取得する方法