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