Вопрос
Я тренжу, чтобы получить список дат от моей БД, который в конечном итоге будет использоваться для заполнения календаря. Каждое «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;