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

スポンサーリンク

あるオブジェクトを配列に入れ、そのオブジェクトが持つ変数(ここでは 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

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

東京造形大学卒業後、マクロメディア(現アドビ システムズ)に入社。Quality AssuranceやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、虫カゴデザインスタジオ株式会社を設立。最近は、ZBrush、Xcode(Swift)、Firebase、Unity、Adobe Creative Cloud関連にフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。