Linq查询与列的计数过滤器

时间:2012-10-09 16:12:36

标签: linq filter count where

我尝试创建一些linq查询,如下所示。

我有一张包含资源计划项目的表格。有一个列weekID和一个已部署的列。我想检查每周部署计划的数量是否不超过40小时。我需要在下面的linq查询中添加一些额外的过滤器,但我不知道如何:(有人可以告诉我如何将这些过滤器添加到当前的linq查询下面吗?

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/

1 个答案:

答案 0 :(得分: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();