1

最終的にカレンダーの作成に使用される日付のリストをデータベースから取得しようとしています。各「カレンダーイベント」には開始日と終了日があります。開始日と終了日を含むすべての日付を取得する必要があります。

これに何を使用すればよいかわからないため、WHEREステートメントで立ち往生しています

public List<EventFeed> GetCalendarDates()
    {

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

アップデート

明確にするために、2010 年 8 月 22 日に開始し、2010 年 8 月 24 日に終了する foobar というカレンダー イベントがある場合、リストを返します。

2010 年 8 月 22 日、2010 年 8 月 23 日、2010 年 8 月 24 日

おかげさまで

4

2 に答える 2

2

私は最近似たようなことをしなければなりませんでしFunc<>た.aを使用して範囲から日付を抽出し、その結果をlinqクエリで使用しました.

Func以下のLinqクエリに同じものを追加しました。によって返されるオブジェクトの名前を指定しなかったため、 Func<> の最初の型パラメーターの型を必要な型にGetEventsList()置き換えるだけです。EventItem

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();
}
于 2010-08-04T13:30:18.417 に答える
0

つまり、開始日以降に開始され、終了日以前に終了したすべてのイベントを選択したいということです。

はいの場合、これは役立ちます

var query = from @event in events
                        where @event.Start.Date >= startDate.Date
                              && @event.End.Date <= endDate.Date
                        select @event;
于 2010-08-04T11:10:35.900 に答える