-1

次のようなlinqクエリを作成しようとしています。

リソース計画項目を含むテーブルがあります。列weekIDと列deployedPlanningがあります。各週の deployPlanning の数が 40 時間を超えていないかどうかを確認したいと思います。以下のlinqクエリにwhereフィルターを追加する必要がありますが、方法がわかりません:(以下の現在のlinqクエリにこれらのwhereフィルターを追加する方法を誰か教えてもらえますか?

var resourcePlanning = new ResourcePlanningManager().Repository.Find(
                rp => rp.EmployeeID == employeeRosterPeriod.EmployeeID &&
                      rp.PlanDate >= employeeRosterPeriod.DateFrom &&
                      rp.PlanDate <= employeeRosterPeriod.DateTo).FirstOrDefault();
            if (resourcePlanning != null)
            {
               // throw excetoption. There are more than 40 hours planned in 1 or more weeks in this range!
            }

たとえば、第 40 週には合計 24 時間の DeployedPlanned 時間があります。これは 40 を超えないので、問題ありません。

http://imageshack.us/photo/my-images/513/tableresourceplanning.png/

4

1 に答える 1

0

あなたが何を求めているのかよくわかりませんが、次のように聞こえます。

var resourcePlanning = new ResourcePlanningManager().Repository.Find(
            rp => rp.EmployeeID == employeeRosterPeriod.EmployeeID &&
                  rp.PlanDate >= employeeRosterPeriod.DateFrom &&
                  rp.PlanDate <= employeeRosterPeriod.DateTo
        )
        .GroupBy(rp => rp.weekID)
        .Where(g => g.Sum(rp => rp.deployedPlanning) > 40)
        .FirstOrDefault();
于 2012-10-09T16:21:40.767 に答える