C# において、配列やリストの順番を昇順や降順に変更するには、Array.Sort
メソッドや List<T>.Sort
メソッド、または LINQ クラスの OrderBy
や OrderByDescending
で実現可能です。
数の小さいものから大きいものへ進む順序のこと。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.Sort
とArray.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
参考リンク
- Array.Sort メソッド | Microsoft Learn
- Array.Reverse メソッド | Microsoft Learn
- List<T>.Sort メソッド | Microsoft Learn
- Enumerable.OrderBy メソッド | Microsoft Learn
- Enumerable.OrderByDescending メソッド | Microsoft Learn
関連記事
【C#】複数のリスト ( List ) を結合する3つの方法【C#】要素に重複のないリストを作成する3つの方法【List】【C#】enum(列挙型)の全要素を List に変換して取得する方法