选择日期范围位于两个不同日期之间的开始日期行

问题描述 投票:0回答:1

我有一个

daterange
,两个月后就包含在内了。

所以我有一个数据集:

1   2022-10-01  2022-10-31  
2   2022-11-01  2022-11-30  
3   2022-12-01  2022-12-31  
4   2023-01-01  2023-01-31  
5   2023-02-01  2023-02-28  
6   2023-03-01  2023-03-31  
7   2023-04-01  2023-04-30  
8   2023-05-01  2023-05-31  
9   2023-06-01  2023-06-30  
10  2023-07-01  2023-07-31  

我有

daterange
startdate
2023-05-15,
enddate
2023-06-15。

有了这个

daterange
我想得到第8行,即2023-05-01和2023-05-31。而不是之前的其余行。根据范围,只有一个或多个

我一直在尝试使用 Linq 查询来实现此目的,但没有结果。

var a = new QueryFactory().Period.Where(x => x.Enddate <= request.ReferenceDate);

我想要第 8 行的原因是因为那是“已完成的月份”,如果我们将

endDate
作为
referenceDate
,则 6 月尚未完成。

c# linq
1个回答
0
投票

如果我理解正确的话,你需要排除

  • 开始得太晚的行,即在结束日期之后开始
  • 过早结束的行,即在开始日期之前结束

您还想排除六月,因为它结束得太晚了。

但是可以包含在开始日期之前开始的记录。

如果是这样,这就变成了

l.Where(x =>  (x.Startdate <= end  ) &&  // Excludes rows that start too late
              (x.Enddate   >= start) &&  // Excludes rows that end too early
              (x.Enddate   <= end  )     // Excludes rows that end too late
) ;
© www.soinside.com 2019 - 2024. All rights reserved.