neitoo
@neitoo

Как вывести даты из списка, где dd = 20?

Нужно вывести все даты где число месяца = 20, не понимаю как это можно сделать... (с использованием split или без)
static void Main(string[] args)
        {
            List<string> date = new List<string>()
            {
                "20.11.2021",
                "10.11.2020",
                "18.08.2017",
                "20.05.2019",
                "06.10.2013"
            };
            
            for (int i = 0; i < date.Count; i++)
            {
                Console.WriteLine(date[i]);
            }
        }


P.S. Только учусь, по этому не исключаю что код может быть ужасным :(
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
Вариант 1, с парсингом дат:
var dates = new[] {
                "20.11.2021",
                "10.11.2020",
                "18.08.2017",
                "20.05.2019",
                "06.10.2013"
};
var lateDates = from date in dates 
                let value = DateOnly.ParseExact(date, "dd.MM.yyyy") // DateOnly добавили в .net6, но можно спокойно вместо него использовать DateTime
                where value.Day == 20
                select value; // вместо value можно выьрать date
                
foreach(var d in lateDates) 
  Console.WriteLine(d);


Вариант 2, через split:
var dates = new[] {
                "20.11.2021",
                "10.11.2020",
                "18.08.2017",
                "20.05.2019",
                "06.10.2013"
};
var lateDates = from date in dates
                let dayPart = date.Split(".", 2)[0]
                let dayOfMonth = int.Parse(dayPart) // тут можно тупо без парсинга сделать where dayPart == "20"
                where dayOfMonth == 20
                select date;
foreach (var d in lateDates)
    Console.WriteLine(d);


В обоих случаях вместо parse можно использовать TryParse, чтобы обработать ошибку нормально, но тогда немного сложнее будет код.

3. Ещё весёлый вариант, специально под такую задачу.
Можно тупо проверять, что строка начинается с 20
var data = dates.Where(x => x.StartsWith("20."));
foreach(var d in data)
  Console.WriteLine(d);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы