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

È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top