Даты C# linq между

Я - Тринг для получения списка дат от моего дб, который будет в конечном счете использоваться для заполнения календаря. Каждое 'календарное событие' имеет дату начала и дата окончания, я должен получить все даты между и включая запуск и дата окончания.

я застреваю на, ГДЕ оператор, поскольку я не уверен, что использовать для этого

public List<EventFeed> GetCalendarDates()
    {

        return (from eventsList in GetEventsList()      
                select new EventFeed()
                        {
                          //EventDate = todo
                        }).ToList();
    }

ОБНОВЛЕНИЕ

только, чтобы быть ясным, если у меня есть календарное событие, названное foobar, который запускается 22.08.2010 и заканчивается 24.08.2010, затем я хочу свой возврат списка:

22.08.2010, 23.08.2010, 24.08.2010

спасибо Кбит

1
задан kb. 4 August 2010 в 11:33
поделиться

2 ответа

Мне недавно пришлось сделать нечто подобное. Я использовал Func <> для извлечения дат из диапазона и использовал результат в запросе linq.

Я добавил ту же функцию Func в ваш запрос Linq ниже. Вы не указали имя объекта, возвращаемого GetEventsList () , поэтому просто замените тип EventItem для первого параметра типа в Func <> любым типом, который вам нужен. .

public static List<EventFeed> GetCalendarDates()
{
    Func<EventItem, List<DateTime>> extractEventDates = eventItem =>
                                                          {
                                                              var dates = new List<DateTime>();
                                                              for (var date = eventItem.StartDate;
                                                                   date <= eventItem.EndDate;
                                                                   date = date.AddDays(1))
                                                              {
                                                                  dates.Add(date);
                                                              }
                                                              return dates;
                                                          };

    return (from eventItem in GetEventsList()
            from eventDate in extractEventDates(eventItem)
            select new EventFeed
                       {
                           EventDate = eventDate
                       }).ToList();
}
2
ответ дан 2 September 2019 в 22:27
поделиться

То есть вы хотите выбрать все события, которые начались в начальную дату или позже и закончились в конечную дату или раньше!

Если да, то это поможет

var query = from @event in events
                        where @event.Start.Date >= startDate.Date
                              && @event.End.Date <= endDate.Date
                        select @event;
0
ответ дан 2 September 2019 в 22:27
поделиться
Другие вопросы по тегам:

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