Pregunta
Tring para obtener una lista de las fechas de mi db que el tiempo se utilizará para rellenar un calendario. Cada 'evento del calendario' tiene una fecha de inicio y fecha de finalización, tengo que conseguir todas las fechas entre y incluyendo la fecha de inicio y fin.
Estoy atascado en el estado donde, como no estoy seguro de lo que debe usar para este
public List<EventFeed> GetCalendarDates()
{
return (from eventsList in GetEventsList()
select new EventFeed()
{
//EventDate = todo
}).ToList();
}
Actualizar
para ser claros, si tengo una llamada foobar evento del calendario que comienza el 22/08/2010 y termina el 24/08/2010, entonces yo quiero que mi lista de regreso:
22/08/2010, 23/08/2010, 24/08/2010
Gracias kb
Solución
que tenía que hacer algo similar recientemente, he usado un Func<>
para extraer las fechas de la gama y se utiliza el resultado de la consulta LINQ.
He añadido la misma Func
a su consulta LINQ a continuación. No se especificó el nombre del objeto que se devuelve por GetEventsList()
por lo que sólo reemplazar el tipo EventItem
para el primer parámetro en el tipo Func <> con lo que el tipo que necesita.
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();
}
Otros consejos
¿Quiere decir que desea seleccionar todos los eventos que haya comenzado a partir fecha de inicio y terminó en o antes de la fecha final!
Si es así, esto ayudará
var query = from @event in events
where @event.Start.Date >= startDate.Date
&& @event.End.Date <= endDate.Date
select @event;