
SQLのようなGroup byを使ったグルーピングを行うことはできますか?



LINQラムダ式のGroupBy区を使ってグルーピングすることができます。
目次
LINQラムダ式のGroupBy区を使ってグルーピングする
LINQラムダ式のGroupByメソッドを使って、指定した条件のグルーピングを行うことができます。
グルーピング後に特定列を抽出したい場合には、Select区を利用します。
コレクション.GroupBy(x=>x.グループキー).select(x=>x.特定列).tolist()
List<(int, string)> lstItem = new List<(int,string)> {(1,"sakura"),
(2, "suisei"),
(3, "usada"),
(3, "usada"),
(2, "suisei") };
var ret = lstItem.GroupBy(x => new { x.Item2 }).Select(x => new { x.Key.Item2 }).ToList();
ret.ForEach(x => Debug.WriteLine(x));Dim lstItem As New List(Of (Integer, String))
lstItem.Add((1, "sakura"))
lstItem.Add((2, "suisei"))
lstItem.Add((3, "usada"))
lstItem.Add((3, "usada"))
lstItem.Add((2, "suisei"))
Dim ret = lstItem.GroupBy(Function(x) New With {Key x.Item2}).
Select(Function(x) New With {x.Key.Item2}).ToList()
ret.ForEach(Sub(x) Debug.WriteLine(x)){ Item2 = sakura }
{ Item2 = suisei }
{ Item2 = usada }CHECK
複数キーでグループ化する場合は、Tuple.Createを利用します。
グルーピングの応用方法
LINQラムダ式のGroupByメソッドを使用して、複雑な処理を行う方法を「C#/VB.NET LINQのGroupByの使い方:グループ化する方法」で紹介していますので、あわせて参考にしてください。

