我需要一些棘手的日期范围功能。
附表有2件事......开始日期和时间。
结束日期可以通过以下方式计算:
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个查询。
我编写这个查询没有问题,但我这样做的方式将是一个巨大的混乱。我希望有更好的方法来做日期范围。
由于
答案 0 :(得分: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;