2017-05-21 9 views
1

以下のコードでは、リストからlinqクエリを使用して値を取得しようとしていますが、values.Butの値を合計する方法はわかりません。解決するのを助けてください問題。linqを使って値を合計するには

list contains: 
Desc Month level value 
M1 Jan  L1 2 
M1 Jan  L2 6 
M2 Feb  L1 4 
M2 Feb  L2 1 

My Expected Result: 
M1 Jan 8 
M2 Feb 5 



var sums1 = objList 

       .GroupBy(y => new { y.Desc, y.Month, y.value }) 
       .Select(group => new { KeyValue = group.Key, Count = group.Count() }); 

答えて

5

group.Sum(x=>x.value)で - あなただけのDescMonth(私は仮定)、その値の部分を合計することによってグループにしたいです。二つのオプション:

var sums1 = objList 
    .GroupBy(y => new { y.Desc, y.Month }) 
    .Select(group => new { KeyValue = group.Key, Sum = group.Sum(y => y.value) }); 

または単一の呼び出しで:

var sums1 = objList.GroupBy(
     y => new { y.Desc, y.Month }, 
     (key, values) => new { key.Desc, key.Month, Sum = values.Sum(y => y.value) }); 
1

交換してくださいあなたのgroup.Countあなたは、あなたのグループでvalueを含むべきではありません

0

はIEnumerableをのためのLINQのSum()拡張メソッドを使用します。

.Select(group => new { KeyValue = group.Key, Sum = group.Sum(obj => obj.value)}); 
関連する問題