以下是该模型的链接: 项目可以有多个任务, 任务可以多次反对它。 任务时间有任务小时和员工 员工有标准成本。
我目前正在计算所有任务的成本总和,循环每个任务,然后乘以我需要的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循环,但我似乎无法找到语法。 有没有更有效的方法,还是这样做?
谢谢:)
答案 0 :(得分:2)
尝试使用SelectMany()
var total = tasks.SelectMany(x => x.TaskTimes)
.Sum(d => d.Employee.StandardCost * d.TaskHours);