我得到了:
var orderedStatItmes = item.Statistics.OrderByDescending(t=>t.StartTime);
请注意,
public BindingList<IStatistics> Statistics { set; get; }
我需要的是将orderedStatItmes
重新分配给item.Statistics
的最佳方法,以便它应该到位。
怎么办?
谢谢!!
我不能说我自己用过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));