Создание диапазона C# Linq
смысл идеи такой есть к примеру диапазон в string "01.01" до "01.02" на выходе нужно получить IEnumerable что должно входить в IEnumerable "01.01", "02.01", "03.01", "04.01", "05.01", "06.01", ... "01.02"
Ответы (2 шт):
Автор решения: return
→ Ссылка
Ну раз уж через LINQ:
using static Enumerable;
var dates = Range(1, 12)
.SelectMany(
_ => Range(1, 31),
(mounth, day) => $"{day:D2}.{mounth:D2}");
Если вым нужно получить определённое количество дат, то просто используйте Take:
static EnumerateDates() => Range(1, 12)
.SelectMany(
_ => Range(1, 31),
(mounth, day) => $"{day:D2}.{mounth:D2}");
var dates = EnumerateDates().Take(31);
Автор решения: Андрей NOP
→ Ссылка
Если это действительно даты, то лучше использовать, собственно, даты:
var year = 2021;
var startDay = new DateTime(year, 1, 1);
var dates = Enumerable.Range(0, 365)
.Select(x => startDay.AddDays(x).ToString("dd.MM"));
foreach (var date in dates)
Console.WriteLine(date);
иначе получите 31 февраля и всё в таком духе
Вместо захардкоженной константы 365, можете использовать метод DateTime.IsLeapYear для проверки високосности года.
Если вам больше по душе все же соседний пример, то вместо Range(1, 31) можно воспользоваться методом DateTime.DaysInMonth