本日はC#の小ネタ枠です。
C#でリストを昇順降順で並び替える方法についてです。
昇順の並べ替え
Sort メソッドを使う場合
Sort メソッドを使うとリストの要素を昇順に並べ替えることができます。
名前空間 System.Collections.Generic から利用できます。
List<int> testDataList = new List<int> { 1, 5, 2, 4, 3 }; testDataList.Sort(); Debug.Log($"# 昇順で並べ替え: {string.Join(", ", testDataList)}");
実行結果
# 昇順で並べ替え: 1, 2, 3, 4, 5
OrderBy メソッドを使う場合
OrderBy メソッドを使うとリストの要素を昇順に並べ替えたシーケンスを戻り値で受け取ることができます。
元のリストは変更されません。名前空間 System.Linq から利用できます。
List<int> testDataList = new List<int> { 1, 5, 2, 4, 3 }; var resultAscendingList = testDataList.OrderBy(element => element); Debug.Log($"# 昇順で並べ替え: {string.Join(", ", resultAscendingList)}"); Debug.Log($"# 元のリスト: {string.Join(", ", testDataList)}");
実行結果
# 昇順で並べ替え: 1, 2, 3, 4, 5 # 元のリスト: 1, 5, 2, 4, 3
降順の並べ替え
Reverse メソッドを使う場合
Reverse メソッドを使うとリストの要素を反転することができます。
Sort を行った後に Reverse を行うことでリストを降順に並べ替えることができます。
名前空間 System.Collections.Generic から利用できます。
List<int> testDataList = new List<int> { 1, 5, 2, 4, 3 }; testDataList.Sort(); testDataList.Reverse(); Debug.Log($"# 降順で並べ替え: {string.Join(", ", testDataList)}");
実行結果
# 降順で並べ替え: 1, 2, 3, 4, 5
または Sort メソッドに結果を反転する要素比較のデリゲートを指定することでも直接降順に並べ替えることができます。
List<int> testDataList = new List<int> { 1, 5, 2, 4, 3 }; testDataList.Sort((a, b) => b - a); Debug.Log($"# 降順で並べ替え: {string.Join(", ", testDataList)}");
実行結果
# 降順で並べ替え: 5, 4, 3, 2, 1
OrderByDescending メソッドを使う場合
OrderByDescending メソッドを使うとリストの要素を降順に並べ替えたシーケンスを戻り値で受け取ることができます。
元のリストは変更されません。名前空間 System.Linq から利用できます。
List<int> testDataList = new List<int> { 1, 5, 2, 4, 3 }; var resultAscendingList = testDataList.OrderByDescending(element => element); Debug.Log($"# 降順で並べ替え: {string.Join(", ", resultAscendingList)}"); Debug.Log($"# 元のリスト: {string.Join(", ", testDataList)}");
実行結果
# 降順で並べ替え: 5, 4, 3, 2, 1 # 元のリスト: 1, 5, 2, 4, 3