日期范围的LINQ查询
本文关键字:查询 LINQ 范围 日期 | 更新日期: 2023-09-27 18:01:51
我需要一个有点棘手的日期范围函数。
一个时间表有2件事…开始日期和小时。
End Date可以通过以下方式计算:
ResolveEndDate(DateTime start, double hours)
{
int days = (int)Math.Floor(hours / GetDayHours());
DateTime dt = start.AddDays(days);
}
这是因为一个工作日有N个小时,以此类推。
基于此,我需要找到以下项目:
- 在范围之前开始,在 之后结束
- 从 开始,到结束
- 从 开始,到结束
我怎么能写一个LINQ查询做到这一点?
给定如下内容:
public static IEnumerable<Project> GetProjectRange(IEnumerable<Project> projects, DateTime start, DateTime end)
{
return from p in projects
where p.Schedule.DateFrom.Value...
select p;
}
另一个棘手的事情是只有月、日和年应该考虑。时间不应被考虑。
满足所有4个条件的1条查询。
我写这个查询没有问题,但是我要做的方式将是一个巨大的混乱。我希望有更好的方法来处理日期范围。
谢谢
像这样?
return
from p in projects
where
( p.Schedule.DateFrom.Value < start
&& p.Schedule.DateTo.Value > end
) || // 1.
( p.Schedule.DateFrom.Value < start
&& p.Schedule.DateTo.Value > start
&& p.Schedule.DateTo.Value < end
) || // 2.
( p.Schedule.DateFrom.Value > start
&& p.Schedule.DateFrom.Value < end
&& p.Schedule.DateTo.Value > start
&& p.Schedule.DateTo.Value < end
) || // 3.
( p.Schedule.DateFrom.Value > start
&& p.Schedule.DateFrom.Value < end
&& p.Schedule.DateTo.Value > end
) // 4.
select p;