У меня есть куча пар дат и денежных значений в SortedDictionary<DateTime, decimal>
, соответствующих остаткам по кредитам, рассчитанным в будущем по датам составления контрактов. Есть ли эффективный способ найти ключ даты, который ближе всего к заданному значению? (В частности, ближайший ключ меньше или равен цели). Дело в том, чтобы хранить только данные в точках, когда значение изменилось, но эффективно ответить на вопрос "какой был баланс на дату x?". для любой даты в диапазоне.
Был задан аналогичный вопрос (Какой словарь .NET поддерживает "поиск ближайшего ключа" ?), и ответ был "нет" в то время, когда по крайней мере, от людей, которые отреагировали, но это было почти 3 года назад.
Вопрос Как найти точку между двумя ключами в отсортированном словаре, представляет собой очевидное решение наивно итерации через все ключи. Мне интересно, существует ли какая-либо встроенная функция фрейма, чтобы воспользоваться тем фактом, что ключи уже проиндексированы и отсортированы в памяти - или, альтернативно, встроенный класс коллекции Framework, который лучше подходит для такого рода запросов.