如何为所有记录求和一个字段,然后用Linq返回所有求和记录的最大值

时间:2017-02-15 16:37:31

标签: c# linq

在尝试将所有记录分组然后求和后,我尝试以最大值返回记录。我能够得到总和,但不能返回最大值的完整记录。

这是我到目前为止所获得的最大总和值?

from es in EmployeeSkills
group es by es.Employee.FirstName + " " + es.Employee.LastName into empGroup
select new
{
    Name = empGroup.Key,
    YOE = (from y in empGroup select y.YearsOfExperience).Sum ()
}

1 个答案:

答案 0 :(得分:1)

您可以使用Aggregate扩展方法

var query=from es in EmployeeSkills
          group es by es.Employee.FirstName + " " + es.Employee.LastName into empGroup
          select new
          {
            Name = empGroup.Key,
            YOE = empGroup.Select(y=>y.YearsOfExperience).Sum()
          };

var result=query.Aggregate((seed, current)=>current.YOE>seed.YOE?current:seed);

或者您也可以使用MoreLinq库中的MaxBy扩展方法:

var result=query.MaxBy(e=>e.YOE);