簡體   English   中英

獲取今天的記錄,包括今天的全天活動

[英]Getting records for today including all day events which span today

我有一個約會列表,帶有開始日期,結束日期和全天標記。

我希望能夠輸出當天的所有記錄。

記錄示例:

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

給定此示例數據,並假設日期為01/12/2016,如何獲取查詢以輸出以下內容:

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

我有兩個查詢都返回僅部分正確的輸出:

start = DateTime.Parse(DateTime.Today.ToString("dd/MM/yyyy 00:00"));
end = DateTime.Parse(DateTime.Today.AddDays(1).ToString("dd/MM/yyyy 00:00"));

var schedule = entity.Schedule.Where(x => x.Start >= start && x.End <= end && !x.AllDay)
                              .OrderBy(x => x.Start)
                              .ToList();

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

以上為您工作

我認為您想確保它在時間表的“日期”部分內。

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()

如果我理解正確,那么您有一個范圍列表,如果它們達到另一個范圍,則要過濾它們。 由於您比較兩個范圍,因此可能發生幾種可能性:

  1. 兩個范圍彼此不接觸

     |---candidate---| |---filter---| 
  2. 候選詞的結尾與過濾器的開頭匹配

     |---candidate---| |---filter---| 
  3. 候選詞的結尾位於過濾器內

     |---candidate---| |---filter---| 
  4. 候選人封裝過濾器

     |---candidate---| |---filter---| 
  5. 候選人與過濾器完全匹配

     |---candidate---| |----filter-----| 
  6. 候選者屬於過濾器

      |---candidate---| |------filter-------| 
  7. 候選者的開頭位於過濾器內

      |---candidate---| |---filter---| 
  8. 候選詞的開頭與過濾器的結尾匹配

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

請指定您希望看到哪些可能性,哪些不想。 有些情況下回答起來很瑣碎(例如1、5和6),但其他所有情況實際上取決於特定的用例。 因此,請告訴我們應該匹配哪種情況,我們可以創建所需的where子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM