Есть массив дат, каждой дате поставлено в соответствие определенное значение параметра. Пользователь вводит дату и надо определить значение параметра, дата которого находится ближе всего к введенной дате. Единственное что приходит в голову это использовать массив кортежей List
Ответ
Как верно заметили, сортировка не нужна. Быстрее будет пробежаться по всем элементам, на ходу вычисляя самый близкий. Ну и не забудьте про приведение дат к UTC, например, если они у вас из разных поясов.
var data = new Dictionary
var specifiedDate = DateTime.Now;
var distances = data
.Select(p => new { Distance = Math.Abs((specifiedDate - p.Key).Ticks), p.Value });
var distance = long.MaxValue;
int closestParameter;
foreach (var pair in distances)
{
if (pair.Distance < distance)
{
distance = pair.Distance;
closestParameter = pair.Value;
}
}
Комментариев нет:
Отправить комментарий