0

私は持っています:

var orderedStatItmes = item.Statistics.OrderByDescending(t=>t.StartTime); 

ご了承ください

public BindingList<IStatistics> Statistics { set; get; }

私が必要としているのは、再割り当てorderedStatItmesするitem.Statisticsための最良の方法です

どうやってするの?

ありがとう!!

4

1 に答える 1

3

私自身、あまり使ったとは言えません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));
于 2012-06-20T20:41:34.127 に答える