Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:从绑定列表中删除最后一项的最有效方法?_C#_Wpf_Collections_Binding_Processing Efficiency - Fatal编程技术网

C# WPF:从绑定列表中删除最后一项的最有效方法?

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

在WPF应用程序中,我有一个对象列表

我们将定期在此列表中添加大量元素(~1-10项/秒)

我们希望在此列表中添加一个“容量”,以便在达到此容量时,删除添加的“最旧”项

此列表将绑定到WPF UserControl,因此它需要是
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)
可观察集合是有序的,因此可以使用索引删除它