SUM 2列实体框架中的嵌套对象

时间:2014-04-15 04:06:02

标签: c# entity-framework linq-to-sql

以下是该模型的链接: 项目可以有多个任务, 任务可以多次反对它。 任务时间有任务小时和员工 员工有标准成本。

我目前正在计算所有任务的成本总和,循环每个任务,然后乘以我需要的2列,然后我总结。

public decimal CalculateCost(IEnumerable<Task> tasks)
{
    decimal total = 0.0M;

    foreach (var task in tasks)
    {
        var cost = from d in task.TaskTimes
               select new { total = d.Employee.StandardCost * d.TaskHours };

        total = cost.Sum(d => d.total);
    }           
    return total;
}

必须有一个更好的方法来做这个而不是做那个foreach循环,但我似乎无法找到语法。 有没有更有效的方法,还是这样做?

谢谢:)

1 个答案:

答案 0 :(得分:2)

尝试使用SelectMany()

var total = tasks.SelectMany(x => x.TaskTimes)
                 .Sum(d => d.Employee.StandardCost * d.TaskHours);