リストのを並び替えたい時のソートの備忘録です🐼
public class Panda { public string name{get; set;} public int age{get; set;} public float weight{get; set;} } public class Main { List<Panda> panda = new List<Panda>(); void Start() { panda.Add(new Panda{name = "ぱんーだ", age = 2, weight = 330.78f}); panda.Add(new Panda{name = "ぱんちぃ", age = 1, weight = 582.49f}); panda.Add(new Panda{name = "ぱんころ", age = 3, weight = 496.21f}); panda.Add(new Panda{name = "ぱんまる", age = 1, weight = 139.93f}); //昇順に並びかえ panda.Sort((a, b) => a.age - b.age); foreach(Panda p in panda){ Debug.Log("昇順:::"+ p.age); } //降順に並びかえ panda.Sort((a, b) => b.age - a.age); foreach(Panda p in panda){ Debug.Log("降順:::"+ p.age); } //名前昇順に並びかえ panda.Sort((a, b) => string.Compare(a.name, b.name)); foreach(Panda p in panda){ Debug.Log("名前昇順:::"+ p.name); } //体重昇順に並びかえ panda.Sort((a, b) => a.weight.CompareTo(b.weight)); foreach(Panda p in panda){ Debug.Log("体重昇順:::"+ p.weight); } //こういう書き方もある panda.Sort(delegate(Panda a, Panda b) { if (a.name == null && b.name == null) return 0; else if (a.name == null) return -1; else if (b.name == null) return 1; else return a.name.CompareTo(b.name); }); foreach(Panda p in panda){ Debug.Log("名前昇順2:::"+ p.name); } }
stringの場合はstringが持っているCompareメソッドの戻り値を条件にして昇順に並びかえができる。
floatの場合はfloatのリスト要素が持ってるCompareToメソッドの戻り値を条件にして並びかえができる。
結果↓↓↓