【发布时间】:2020-10-10 23:49:47
【问题描述】:
我有一个以日期时间为键的字典列表。该日期时间与当前时间无关。
每当有新记录添加到列表中时,我还想删除列表中最新日期时间超过 24 小时的任何记录,因此我运行如下操作:
records = records.Where(x => x.Key > theDate).ToDictionary(i => i.Key, i => i.Value);
但是,由于有数万条记录,因此对每条新记录运行此操作成本很高。
有没有比我上面的方法更有效的方法来过滤/删除旧记录。
【问题讨论】:
-
我不是 100% 确定,但也许 SortedDictionary 可能比常规
Dictionary更有效地过滤键 -
由于 OP 用例的性质,SortedDictionary 后面的红黑树必须经常重新平衡。 OP 应该针对他们的用例比较 SortedDictionary 和字典环的性能。
-
字典的用例是什么?,它似乎是这个工作的错误工具..你想用它解决什么问题?
-
每次添加新元素时都清除字典中的旧元素似乎有点矫枉过正。这样做背后的驱动力是什么?
-
我的建议是不要在 add 时删除它们,而是在 read 时删除它们。因此,您构建了一个返回所有数据的方法,如果它看到旧数据则无法返回(并同时将其删除)。
标签: c# list dictionary