2011-11-01 18 views
0

私はStartDateTimeとEndDateTimeのカレンダーイベントを持っています。これらのイベントはデータベースにレコードとして保存されます。私は特定の日付のすべてのイベントを取得したい。すぐに思い浮かぶ複数のシナリオがあります。特定の日付のカレンダーイベントを取得するにはどうすればよいですか?

2011年12月12日の特定の日付を指定すると、12/01/2011(12:00:00 AMから11:59:59 PMまで)のイベントを取得したいと考えています。

は、だから私は選択する必要があります。

  1. イベントをそのStartDateTimeとEndDateTimeは、2011年12月1日午前12:00:00および2011年12月1日午前11時59分00秒PM

    の範囲に該当します
  2. 次の日にまたがるイベント。つまり、StartDateTimeは2011年12月1日の午後11時59分59秒前ですが、EndDateTimeはいつか将来の予定です

  3. EndDateTimeが2011年12月1日で午後11時59分59秒にあり、StartDateTimeがbefore 12/01/2011 12:00:00 AM

  4. 複数の日にまたがるイベント。それはStartDateTimeは2011年12月1日午前12:00:00前であると私は他のシナリオを逃す可能性があります2011年12月1日11時59分59秒PM

後EndDateTimeです。私はこれがオリジナルの問題ではないという気持ちがあり、そこには私が必要とするものを正確に行う方法があります。これらのイベントを選択する標準的な方法はありますか?私はここにジェイソンとX-ゼロによって提案されたソリューションを組み合わせた後

if ((StartDate <= InputDate) && (EndDate >= InputDate)) 
+0

これらのイベントはどこでどのように表されていますか?あなたの質問からは不明です。 – Oded

+0

これらのイベントはデータベーステーブルのレコードです。すべてのレコードには、datetime型のStartDateTimeとEndDateTimeがあります。 LINQを使用してこれらのイベントを照会しようとしています –

答えて

1

は、私が持っているものです。

DateTime inputDateStart = inputDate; 
DateTime beginningOfNextDay = inputDate.AddDays(1); 


IQueryable<MyEvent> inputDayEvents = (<collection of all the events here>) 
.Where(e => e.StartDateTime < beginningOfNextDay && e.EndDateTime >= inputDateStart) 

ここにはクエリの視覚的表現があります。

enter image description here

+1

'InputDate'を' timestamp'に変更すると(データが現在保存されているように見えるので)、 'StartDate'を_lessの_と比較する必要があります** next ** day、そして** End ** Dateの開始に対してEndDateを実行します。 'date'データ型と比較して、この文は正常に動作します。 –

0

(擬似コード)あなたの4例は、単一のステートメントにブレークダウンだと思う

関連する問題