如何将有序值应用于同一绑定列表



我得到了:

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));

最新更新