私は持っています:
var orderedStatItmes = item.Statistics.OrderByDescending(t=>t.StartTime);
ご了承ください
public BindingList<IStatistics> Statistics { set; get; }
私が必要としているのは、再割り当てorderedStatItmes
するitem.Statistics
ための最良の方法です。
どうやってするの?
ありがとう!!
私自身、あまり使ったとは言えませんBindingList<T>
。
アクセスできる場合は、基になるコレクションを並べ替えた方がよい場合があります。または、BindingList<T>
自体が並べ替えをサポートしている場合は、 を使用することをお勧めしますIBindingList.ApplySort
。
それを行う恐ろしくハックな方法の1つは次のとおりです。
var ordered = item.Statistics.OrderByDescending(t => t.StartTime).ToList();
for (int i = 0; i < ordered.Count; i++)
{
item.Statistics[i] = ordered[i];
}
...しかし、更新中にバインディングがどうなるかは言いたくありません。
古い回答(質問が編集されて言及される前BindingList<T>
)
既存の配列を変更する必要があるということですか、それとも新しい配列参照をitem.Statistics
プロパティに割り当てるだけでよろしいですか? 後者の場合:
item.Statistics = item.Statistics.OrderByDescending(t=>t.StartTime).ToArray();
基本的に配列を並べ替えたい場合(質問のタイトルに基づいて、配列であると想定しています)、次を使用できます。
Array.Sort(item.Statistics, (x, y) => x.StartTime.CompareTo(y.StartTime));