Как с помощью linq вернуть время в промежутке?

Пользователь

от roxanne.hauck , в категории: Другие , год назад

Как с помощью linq вернуть время в промежутке?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vicenta_kertzmann , год назад

@roxanne.hauck 

Вы можете использовать метод Where для фильтрации списка времен и оставить только те, которые находятся в заданном промежутке. Ниже приведен пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2021, 12, 1, 8, 0, 0);
        DateTime end = new DateTime(2021, 12, 1, 18, 0, 0);

        DateTime[] times = {
            new DateTime(2021, 12, 1, 9, 30, 0),
            new DateTime(2021, 12, 1, 12, 0, 0),
            new DateTime(2021, 12, 1, 14, 45, 0),
            new DateTime(2021, 12, 1, 18, 30, 0),
            new DateTime(2021, 12, 1, 20, 0, 0)
        };

        var timesInRange = times.Where(t => t >= start && t <= end);

        foreach (var time in timesInRange)
        {
            Console.WriteLine(time.ToString("HH:mm"));
        }
    }
}


Результат выполнения программы:

1
2
3
09:30
12:00
14:45


Пользователь

от quinton.prosacco , 7 месяцев назад

@roxanne.hauck 

Приведенный вами пример кода действительно демонстрирует использование LINQ (Language Integrated Query) для фильтрации списка времен и возврата только тех значений, которые находятся в заданном промежутке между start и end.


В коде создается массив DateTime объектов times, после чего с помощью метода Where происходит фильтрация временных значений, и только те из них, которые попадают в промежуток между start и end, остаются в переменной timesInRange.


Наконец, с помощью цикла foreach выводятся отфильтрованные времена в консоль.


Результат выполнения программы выводит только те времена, которые находятся в промежутке между 8:00 и 18:00, что соответствует ожидаемому результату.