Сопоставление записи списка с учетов времени

var list = new List<Logs>();            
            foreach (var key in listDetect.ToList())
            {
                foreach (var item in key.Value)
                {
                    AIS result = AISInfo[key.Key].ToList().Find(t =>t.DateCreate.TimeOfDay == item.item.LastWriteTime.TimeOfDay);
                    if (result != null)
                    {
                        list.Add(new Logs()
                        { ....}
                    }
                 }}

У меня есть два списка, у каждого из списков в модели есть свойство в котором записано время изменения файла. Я пытаюсь для каждого элемента списка listDetect найти элемент списка AISInfo. Но в даном случае у меня идет строгое сопоставления по времени, а мне надо что бы для записи в 12:10:05 находились записи за промежуток от 12:10:05 +- 30 секунд.


Ответы (1 шт):

Автор решения: RusArt

Воспользуйтесь операциями с TimeSpan, там достаточно богатый api. Например, сравнение можно написать как-то так:

(a.TimeOfDay - b.TimeOfDay).Duration() <= TimeSpan.FromSeconds(30)

Более того, вам даже не нужен TimeOfDay, правильнее вычесть одну дату из другой, чтобы учесть смену дней и разные даты.

(a - b).Duration() <= TimeSpan.FromSeconds(30)
→ Ссылка