2010-08-04 4 views
1

Я получаю список дат из моего db, который в конечном итоге будет использован для заполнения календаря. Каждое «событие календаря» имеет дату начала & дата окончания, мне нужно получить все даты между & включая начало & дата окончания.C# linq датируется между

я застрял на WHERE заявление, так как я не уверен, что использовать для этого

public List<EventFeed> GetCalendarDates() 
    { 

     return (from eventsList in GetEventsList()  
       select new EventFeed() 
         { 
          //EventDate = todo 
         }).ToList(); 
    } 

UPDATE

просто быть ясно, если у меня есть календарь событий под названием Foobar, который начинается на 22/08/2010 и заканчивается на 24/08/2010, то я хочу, чтобы мой список возвращения:

22/08/2010, 23/08/2010, 24/08/2010

спасибо kb

ответ

2

я должен был сделать что-то подобное в последнее время, я использовал 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(); 
} 
+0

спасибо fletcher, я придумал что-то похожее, но ваше решение меньше кода, спасибо kb –

0

Вы хотите выбрать все события, которые были начаты после или после даты начала и закончились до или до конца даты!

Если да, то это поможет

var query = from @event in events 
         where @event.Start.Date >= startDate.Date 
           && @event.End.Date <= endDate.Date 
         select @event; 
+0

Hi mho, спасибо за ваш ответ, но откуда это взялось? @ event.Start.Date –

+0

Hi mho, я обновил сообщение ... –

Смежные вопросы