You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Linq筛选跨两个月daterange中的已完成月度数据?

筛选给定日期范围内已完成的月度数据

正确筛选逻辑

要得到目标结果,需同时满足两个条件:

  • 月度的结束日期不早于给定daterange的起始日期(排除daterange开始前已完成的月度)
  • 月度的结束日期不晚于给定daterange的结束日期(排除daterange结束后才会完成的月度)

修正后的Linq查询代码

假设请求参数中包含DateRangeStart(对应2023-05-15)和DateRangeEnd(对应2023-06-15),代码如下:

var completedMonthsInRange = new QueryFactory()
    .Period
    .Where(x => x.Enddate >= request.DateRangeStart && x.Enddate <= request.DateRangeEnd);

原代码问题分析

你之前的代码仅判断x.Enddate <= request.ReferenceDate,若ReferenceDate是daterange的结束日期,会将所有结束日期早于等于该日期的月度(第1-8行)全部选出,无法排除daterange开始前就已完成的月度(第1-7行),因此不符合需求。

结果验证

针对你的数据集,上述查询会精准筛选出第8行数据(2023-05-01 至 2023-05-31):

  • 该月度的结束日期2023-05-31落在daterange [2023-05-15, 2023-06-15] 区间内,满足已完成且在目标范围内的要求
  • 第1-7行结束日期早于2023-05-15,第9-10行结束日期晚于2023-06-15,均被排除

内容的提问来源于stack exchange,提问作者Mernayi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:35:29