【发布时间】:2017-04-23 00:10:34
【问题描述】:
在我的 C# 程序中,我遇到了一个障碍,我有一个存储日期范围的表(列是日期范围 ID (int)、开始日期 (DateTime) 和结束日期 (DateTime)。我想查询表并取回仅在特定日期范围内的行。我不能使用 datetime.date,因为它包括年份。
例如,我想查询表并获取介于 01-01 和 5-31 之间的所有日期范围。
我曾尝试使用以下 lambda 查询表,但我的结果集为空。
List<DateRanges> tempDateRangeList = dataContext
.DateRanges
.Where(r=>r.BeginDate.Month <= startDate.Month
&& r.EndDate.Month >= finishDate.Month)
.ToList();
tempDateRangeList = tempDateRangeList.Where(r=>r.BeginDate.Day <= startDate.Day
&& r.EndDate.Day >= finishDate.Day)
.ToList();
有没有人对我如何做到这一点有任何建议?
编辑:
BeginDate 和 EndDate 的示例如下:
开始日期 2016 年 1 月 1 日、2016 年 5 月 25 日、2016 年 9 月 11 日
结束日期 2016 年 5 月 24 日、2016 年 9 月 10 日、2016 年 12 月 31 日
过滤日期为: 开始日期 = 12/8 完成日期 = 12/12
预期结果: 9/11 开始日期 结束日期 12/31
【问题讨论】:
-
所以上面的 sn-p 不适合你?
-
是的,它不起作用。它获取月份之间的所有日期范围(第一行),但是当它尝试过滤日期时返回零结果(第二行)。
-
不是所有的间隔都向后吗?你不想
Begin >= start && End <= finish吗?你有相反的情况,Begin <= start && End >= finish。 -
@YaserAdelMehraban OP 已经说过他们必须忽略日期的年份部分。
-
如果结束日期是 12/12,为什么结束日期 12/31 会包含在结果中?这不会使 12/31 超出过滤范围吗?
标签: c# entity-framework datetime