C#, LINQでGroupByしたコレクション内の数値の合計を得る
はじめに
開発環境諸々
- Microsoft Visual Studio Community 2019
- Version 16.5.4
- Microsoft .NET Framework
- Version 4.8.03752
- プロジェクトの種類
- Console App(.NET Core3.1)
名前空間
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便利!何かしら集計するときに使える!