2016-12-01 3 views
0

私は開始日、終了日、およびアルデイフラグを持つ予定リストを持っています。今日のすべての日イベントを含む今日のレコードを取得する

現在の日のすべてのレコードを出力したいと考えています。

例レコード:

ID Start,   End,    AllDay 

1 27/11/2016 00:00 30/11/2016 00:00 true 
2 30/11/2016 00:00 01/12/2016 00:00 true 
3 30/11/2016 00:00 03/12/2016 00:00 true 
4 30/11/2016 00:00 05/12/2016 00:00 true 
5 01/12/2016 10:00 01/12/2016 15:00 false 
6 02/12/2016 09:00 02/12/2016 11:00 false 

この例のデータを考慮すると、日付を仮定すると、2016年1月12日は、どのように私は次の出力にクエリを得るかである:

ID Start,   End,    AllDay 

2 30/11/2016 00:00 01/12/2016 00:00 true 
3 30/11/2016 00:00 03/12/2016 00:00 true 
4 30/11/2016 00:00 05/12/2016 00:00 true 
5 01/12/2016 10:00 01/12/2016 15:00 false 

I 2つのクエリーを持ち、どちらも部分的にしか正しい出力を返しません。

+0

どれくらい近いですか?どのようなアウトプットを手に入れますか? – Mat

+0

結果を掲載できますか?オープンな質問:DateTimeを解析してDateTimeに戻す理由は何ですか? <= and > =と日付を比較すると、なぜ問題の日付(現在:今日)に1日追加するのですか?あなたは.AddDaysを削除しないか、x.Endとの比較を変更し、=を削除しないでください(より小さい、より小さくないか等しくない)? –

+0

それで眠って、少し調整して、私が期待した結果を得ました。 – Codesight

答えて

0
var events= entity.Schedule.Where((
       x => x.Start <= start && x.End => start) || x.AllDay) 
       .OrderBy(x => x.Start) 
       .ToList(); 

上記はあなたのためです

+0

その日は何日でも、「一日中」に予定されている_every_エントリーを返しませんか?正直なところ、AllDayフラグは、OPが(彼らが望むものを明確にしない限り)この質問の目的とは完全に無関係だと私は思う。 –

+0

AllDayフラグが設定されているすべてのものを返すので、これはうまくいきません。 – Codesight

0

私はそれがスケジュールの日付部分に含まれていることを確認したいと思います。

var events = entity.Schedule 
    .Where(x => x.Start.Date <= start.Date && start.Date <= x.End.Date) 
    .OrderBy(x => x.Start) 
    .ThenBy(x => x.End) 
    .ToList() 
0

私が正しく理解していれば、あなたは範囲のリストを持っていて、別の範囲に当たった場合、それらをフィルタリングする必要があります。

  1. 両方の範囲は、候補者の相互

    |---candidate---| 
            |---filter---| 
    
  2. 終わりには触れていないの開始一致:あなたは二つの範囲を比較するという事実のため、発生する可能性がいくつかの可能性がありますフィルタ

    |---candidate---| 
           |---filter---| 
    
  3. 候補の端部は、フィルタ内に収まる

    |---candidate---| 
           |---filter---| 
    
  4. 候補がフィルタ

    |---candidate---| 
        |---filter---| 
    
  5. をカプセル化候補正確候補の開始

    |---candidate---| 
    |------filter-------| 
    
  6. フィルタ内に収まる

    |---candidate---| 
    |----filter-----| 
    
  7. フィルタに一致しますカリフォルニアndidateは、フィルタ

       |---candidate---| 
    |---filter---| 
    

の終わりに一致する候補の開始フィルタ

|---candidate---| 
|---filter---| 
  • 内にあるあなたが見ているではないしたいとこれらの可能性を指定してください。いくつかのケースは(1、5、6のように)答えるのは簡単ではありませんが、他のすべてのケースは本当に特定のユースケースに依存しています。ですから、一致させる必要があるケースを教えてください。希望するwhere句を作成できます。

  • 関連する問題