我有一个 ObservableCollection 和一个 WPF UserControl 数据绑定到它。控件是一个图表,它为 ObservableCollection 中的每个 BarData 类型的项目显示一个垂直条。
ObservableCollection<BarData>
class BarData
{
public DateTime StartDate {get; set;}
public double MoneySpent {get; set;}
public double TotalMoneySpentTillThisBar {get; set;}
}
现在我想根据 StartDate 对 ObservableCollection 进行排序,以便 BarData 在集合中按 StartDate 的递增顺序排列。然后我可以像这样计算每个 BarData 中 TotalMoneySpentTillThisBar 的值 -
var collection = new ObservableCollection<BarData>();
//add few BarData objects to collection
collection.Sort(bar => bar.StartData); // this is ideally the kind of function I was looking for which does not exist
double total = 0.0;
collection.ToList().ForEach(bar => {
bar.TotalMoneySpentTillThisBar = total + bar.MoneySpent;
total = bar.TotalMoneySpentTillThisBar;
}
);
我知道我可以使用 ICollectionView 对数据进行排序、过滤以进行查看,但这不会改变实际的集合。我需要对实际集合进行排序,以便可以计算每个项目的 TotalMoneySpentTillThisBar。它的价值取决于收藏品的顺序。
谢谢。