本日は C# の小ネタ枠です。
Sortを使ってリストの値や要素を元にソートを行う方法を記事にします。
Sort
List
比較メソッドをオーバーロードすることで要素内のプロパティを比較するなど並べ替えのロジックを指定することも可能です。
learn.microsoft.com
サンプルコード
以下のサンプルコードを作成しました。
一つ目のリストはリストの値をそのままソートし、二つ目のリストは比較メソッドをオーバーロードすることで要素内の文字列を元にソート処理を行っています。
・SortTest.cs
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public class SortTest : MonoBehaviour { private class NameNumber { public int Number; public string Name; } void Start() { // 値でソートする List<int> numberList = new List<int>() { 1, 5, 3, 4, 2 }; Debug.Log($"{string.Join(",", numberList)}"); numberList.Sort(); // 値でソートする Debug.Log($"{string.Join(",", numberList)}"); // 特定の要素でソートする List<NameNumber> nameNumberList = new List<NameNumber>() { new NameNumber() { Number = 1, Name = "EEE" }, new NameNumber() { Number = 5, Name = "DDD" }, new NameNumber() { Number = 3, Name = "CCC" }, new NameNumber() { Number = 4, Name = "BBB" }, new NameNumber() { Number = 2, Name = "AAA" }, }; Debug.Log($"{string.Join(",", nameNumberList.Select(data => $"{data.Number}:{data.Name}"))}"); nameNumberList.Sort(delegate(NameNumber x, NameNumber y) { return String.Compare(x.Name, y.Name, StringComparison.Ordinal); // Nameプロパティでソートする }); Debug.Log($"{string.Join(",", nameNumberList.Select(data => $"{data.Number}:{data.Name}"))}"); } }