Вопрос

Я тренжу, чтобы получить список дат от моей БД, который в конечном итоге будет использоваться для заполнения календаря. Каждое «Calendar Event» имеет дату начала и окончания окончания, мне необходимо получить все даты между и включая дату начала и окончания.

Я застрял на выписке, где я не уверен, что использовать для этого

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

Благодаря КБ

Это было полезно?

Решение

Я должен был сделать что-то похожее в последнее время, я использовал 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();
}

Другие советы

Вы имеете в виду, вы хотите выбрать все события, которые начаты находятся или после даты начала или после окончания или до окончания окончания!

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

var query = from @event in events
                        where @event.Start.Date >= startDate.Date
                              && @event.End.Date <= endDate.Date
                        select @event;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top