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

¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top