C# WPF:从绑定列表中删除最后一项的最有效方法?
在WPF应用程序中,我有一个对象列表 我们将定期在此列表中添加大量元素(~1-10项/秒) 我们希望在此列表中添加一个“容量”,以便在达到此容量时,删除添加的“最旧”项 此列表将绑定到WPF UserControl,因此它需要是C# WPF:从绑定列表中删除最后一项的最有效方法?,c#,wpf,collections,binding,processing-efficiency,C#,Wpf,Collections,Binding,Processing Efficiency,在WPF应用程序中,我有一个对象列表 我们将定期在此列表中添加大量元素(~1-10项/秒) 我们希望在此列表中添加一个“容量”,以便在达到此容量时,删除添加的“最旧”项 此列表将绑定到WPF UserControl,因此它需要是ObservableCollection或类似的 但是,我的理解是,集合不能保证订单,因此我无法执行以下操作: int nbOfElementsToRemove = EventsList.Count - MAX_EVENTS; if (nbOfElementsToRemo
ObservableCollection
或类似的
但是,我的理解是,集合
不能保证订单,因此我无法执行以下操作:
int nbOfElementsToRemove = EventsList.Count - MAX_EVENTS;
if (nbOfElementsToRemove > 0)
{
LoggingEvent[] loggingEvents = EventsList.Take(nbOfElementsToRemove).ToArray();
foreach (LoggingEvent loggingEvent in loggingEvents)
{
EventsList.Remove(loggingEvent);
}
}
因为我可能买不到最旧的东西
那么,删除列表中必须绑定到WPF usercontrol的最旧项的最有效方法是什么呢?一个
可观测集合实际上是一个有序集合,因此通过各种方法删除最旧项应该没有问题
如果您只是通过EventsList.Add()
添加项,则可以删除集合中的第一项:EventsList.RemoveAt(0)
可观察集合是有序的,因此可以使用索引删除它