[Unity C#] 配列内のオブジェクトの持つ変数でソートする

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

あるオブジェクトを配列に入れ、そのオブジェクトが持つ変数(ここでは time という時刻の文字列)で、その配列をソートした時のMEMOです。

 Array.Sortでソート

例として、

public class ProgramsListItem
{
	public Program program;
	public string time;
	public bool done = false;
}

こんなような ProgramsListItemクラスのインスタンスを

ProgramsListItem[] specialPrograms;

のように specialPrograms という配列に入れていたとします。このオブジェクトの time 変数には、「02:07:00」とか「02:10:00」のように時刻の文字列が入っています。Array を使うので「using System;」しときます。

時刻の早い順(昇順)に並べるには、

Array.Sort(specialPrograms, (a, b) => (int)DateTime.Parse(a.time).Ticks - (int)DateTime.Parse(b.time).Ticks);

00

とし、時刻の遅い順に並べ替える(降順)には、

Array.Sort(specialPrograms, (a, b) => (int)DateTime.Parse(b.time).Ticks - (int)DateTime.Parse(a.time).Ticks);

01

として、これらの行を通過すると、時刻順にソートできました。

スポンサーリンク