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.

一种非常骇人听闻的做法是:

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 回答