在WPF应用程序中,我有一个对象列表。
我们会定期在这个列表中添加很多元素(约1-10项/秒)。
我们希望在此列表中添加“容量”,以便在达到此容量时,删除添加的“最旧”项目。
此列表将绑定到WPF UserControl,因此它必须为ObservableCollection
或类似。
但是,我的理解是Collection
并不保证订单,所以我不能做到以下几点:
int nbOfElementsToRemove = EventsList.Count - MAX_EVENTS;
if (nbOfElementsToRemove > 0)
{
LoggingEvent[] loggingEvents = EventsList.Take(nbOfElementsToRemove).ToArray();
foreach (LoggingEvent loggingEvent in loggingEvents)
{
EventsList.Remove(loggingEvent);
}
}
因为我可能找不到最旧的物品。
那么删除必须绑定到WPF用户控件的列表中最旧的项目的最有效方法是什么?
答案 0 :(得分:1)
ObservableCollection
确实是一个有序集合,因此您可以通过各种方式删除最旧的集合。
如果您只是通过EventsList.Add()
添加项目,则可以删除该集合中的第一项:EventsList.RemoveAt(0)
答案 1 :(得分:1)
订购了ObservableCollection,因此您可以使用索引将其删除。