【发布时间】:2012-09-06 22:20:40
【问题描述】:
我在SortedDictionary<DateTime, decimal> 中有一组日期和货币值,对应于在合同定义的复利日期计算到未来的贷款余额。有没有一种有效的方法来找到最接近给定值的日期键? (具体来说,最近的键小于或等于目标)。关键是仅存储值更改时的数据,但有效地回答“x日期的余额是多少?”的问题。范围内的任何日期。
有人问了一个类似的问题 (What .NET dictionary supports a "find nearest key" operation?),当时的答案是“不”,至少在回答的人看来,但那是差不多 3 年前的事了。
问题How to find point between two keys in sorted dictionary 提出了天真地遍历所有键的明显解决方案。我想知道是否存在任何内置的框架函数来利用键已经在内存中索引和排序的事实 - 或者是一个内置的框架集合类,它更适合这种查询。
【问题讨论】:
-
但是字典的键没有在内存中排序。这就是为什么您不能直接在字典上执行“最接近”或“小于或等于”的原因。
-
链接的问题提到了
SortedList<K, V>结构。我会同意的。
标签: c# sorting dictionary