Создание диапазона 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

→ Ссылка