c# linq获取日期范围在选定星期内的记录
本文关键字:记录 获取 linq 取日期 范围 | 更新日期: 2023-09-27 18:12:04
我有一个List<Holiday>
假期,具有以下属性:
- HolidayId
- StartDate可以
- EndDate
另一方面,我有以下代码生成当前周中的所有日期:
int days = currentDate.DayOfWeek - DayOfWeek.Sunday;
DateTime dtTemp = currentDate.AddDays(-days);
weekDays.Add(dtTemp);
// add all dates within the current week
weekDays.AddRange(new DateTime[] {
dtTemp.AddDays(1), dtTemp.AddDays(2), dtTemp.AddDays(3), dtTemp.AddDays(4), dtTemp.AddDays(5), dtTemp.AddDays(6)
});
现在,我需要过滤我的List<Holiday>
,以便我只得到那些在当前星期中有天数的记录。
当前星期:7月6日至7月12日
节假日1:StartDate =' 2014-07-10', EndDate='2014-07-22'
上面的Holiday即使EndDate不在当前的星期范围内,也有一些日子会在当前的日期中,所以我应该得到那个记录。
当前星期:7月6日至7月12日
节假日2:StartDate =' 2014-07-04', EndDate='2014-07-06'
我也应该得到这个记录,因为7月6日在本周。
感谢任何帮助。由于
holidays.Where(h=>weekDays.Any(w=>h.StartDate >= w && h.EndDate <= w))
int days = currentDate.DayOfWeek - DayOfWeek.Sunday;
DateTime weekStart = currentDate.AddDays(-days);
DateTime weekEnd = weekStart.AddDays(6);
return holidays.Where(h=>h.StartDate <= weekEnd && h.EndDate >= weekStart);
这与AD不同。Net的解决方案(和OPs的期望),因为我们根本不需要创建一周中所有日期的列表。在大多数情况下,它还需要更少的比较,因此在重要的情况下,它可以更快。