早く流れる川で

雑に書き留めた何か

C#, LINQでGroupByしたコレクション内の数値の合計を得る

はじめに

C#LINQを用いて名前やID別で値を集計したい。

開発環境諸々

名前空間

using System;
using System.Linq;

集計対象

var hoges = new[]
{
    new {Name = "a", Score = 1},
    new {Name = "a", Score = 2},
    new {Name = "a", Score = 3},
    new {Name = "b", Score = 4},
    new {Name = "b", Score = 5},
};

GroupByでまとめたりSumったり

var query = hoges
    .GroupBy(item => item.Name)
    .Select(item => new
    {
        Name = item.Key,
        TotalScore = item.Sum(x => x.Score)
    });

結果確認

foreach(var item in query)
{
    Console.WriteLine(item);
}

実行結果

{ Name = a, TotalScore = 6 }
{ Name = b, TotalScore = 9 }

所感

LINQ便利!何かしら集計するときに使える!