Добавление недостающих дней в коллекцию - C#
Формулировка задачи:
Доброго времени суток.
У меня имеется коллекция DateTime.
В коллекции содержатся объекты, у которых поле DayOfWeek может быть одинаково.
Также в коллекции отсутствуют некоторые элементы, у которых DayOfWeek отличается от других элементов.
Проще говоря - у меня есть коллекция дат, раскиданных по одной неделе, но некоторых дат там не имеется - некоторых конкретных дней (например нету понедельника или среды).
Есть ли вариант дополнить коллекцию недостающими элементами, дата которых будет вычислена из уже имеющихся элементов?
Т.е. если у нас есть вторник, то дата понедельника может быть вычислена через
.AddDays(-1);
.
Не могли бы вы подсказать универсальный алгоритм?
Спасибо. Решение задачи: «Добавление недостающих дней в коллекцию»
textual
Листинг программы
List<iDay> kkk(List<iDay> inn) { //if (inn.Count == 0) return inn; DateTime min=DateTime.MaxValue, max=DateTime.MinValue; for (int i=0; i<inn.Count; i++) { if (inn[i].Date > max) max = inn[i].Date; else if (inn[i].Date < min) min = inn[i].Date; } if (min.DayOfWeek != DayOfWeek.Monday) min = min.AddDays(- ((int)min.DayOfWeek == 0 ? 7 : (int)min.DayOfWeek)+1); if (max.DayOfWeek != DayOfWeek.Saturday || max.DayOfWeek != DayOfWeek.Sunday) max = max.AddDays((int)max.DayOfWeek == 0 ? 0 : 7-(int)max.DayOfWeek); int days = (max.Date - min.Date).Days; var missingDays = Enumerable.Range(1, days).Select(n => min.Date.AddDays(n)).Except(inn.Select(x => x.Date.Date)); inn.AddRange(missingDays.Select(d => new iDay(d))); return inn; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д