2017-02-15 19 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); 

を使用することができますまたはあなたはまた、MoreLinqライブラリからMaxBy拡張メソッドを使用することができます。私はあなたがタイプミスがあると思う

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

。あなたが 'e'を持っている場合、それは' current'でなければなりません。 –

+0

@MikeHixsonあなたは正しいです、ありがとう – octavioccl

関連する問題