ちょっとトリッキーな日付範囲関数が必要です。
スケジュールには、開始日と時間の 2 つがあります。
終了日は、次のようにして計算できます。
ResolveEndDate(DateTime start, double hours)
{
int days = (int)Math.Floor(hours / GetDayHours());
DateTime dt = start.AddDays(days);
}
これは、1 日の稼働時間が 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;
}
もう 1 つのトリッキーな点は、月日と年のみを考慮する必要があることです。時間を考慮してはいけません。
4 つの条件すべてを満たす 1 つのクエリ。
このクエリを書くのに問題はありませんが、私がそれを行う方法は非常に混乱するでしょう. 日付範囲を行うためのより良い方法があることを願っています。
ありがとう