2017-02-15 50 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