Domanda
Tring per ottenere un elenco di date dal mio db che saranno eventualmente utilizzati per popolare un calendario. Ogni 'evento del calendario' ha una data di inizio e la data di fine, ho bisogno di ottenere tutte le date tra e tra cui la data di inizio e fine.
Sono bloccato sulla dichiarazione in cui, come io non sono sicuro che cosa da utilizzare per questo
public List<EventFeed> GetCalendarDates()
{
return (from eventsList in GetEventsList()
select new EventFeed()
{
//EventDate = todo
}).ToList();
}
UPDATE
tanto per essere chiari, se ho un evento del calendario chiamato foobar che inizia il 22/08/2010 e termina il 24/08/2010, quindi voglio la mia lista ritorno:
22/08/2010, 23/08/2010, 24/08/2010
grazie kb
Soluzione
ho dovuto fare qualcosa di simile poco tempo fa, ho usato un Func<>
per estrarre le date della gamma e utilizzato il risultato nella query LINQ.
Ho aggiunto la stessa Func
alla query LINQ qui sotto. non è stato specificato il nome dell'oggetto che viene restituito dalla GetEventsList()
quindi basta sostituire il tipo EventItem
per il primo parametro di tipo nella Func <> con qualsiasi tipo avete bisogno.
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();
}
Altri suggerimenti
Vuoi dire che si desidera selezionare tutti gli eventi che hanno cominciato a decorrere della data di inizio e fine entro la data di fine!
Se sì, allora questo aiuterà
var query = from @event in events
where @event.Start.Date >= startDate.Date
&& @event.End.Date <= endDate.Date
select @event;