2017-02-15 52 views
1

我试图在所有记录被分组然后求和之后用最大值返回记录。我能够得到总数,但不能返回最大值的完整记录。如何总结所有记录的字段,然后用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

你可以使用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); 

或者你也可以使用MaxBy扩展方法从MoreLinq库:

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

我认为你有一个错字。如果你有'e',它应该是'current'。 –

+0

@MikeHixson你是对的,谢谢 – octavioccl