【发布时间】:2016-03-04 16:28:04
【问题描述】:
在 WPF 应用程序中,我有一个对象列表。
我们会定期在这个列表中添加很多元素(~1-10 项/秒)。
我们想在这个列表中添加一个“容量”,以便当我们达到这个容量时,我们会删除添加的“最旧”项。
此列表将绑定到 WPF 用户控件,因此它需要为 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 用户控件的最旧项目的最有效方法是什么?
【问题讨论】:
标签: c# wpf collections binding processing-efficiency