このブログではAffinger5を使用しています。
今回のテーマ
こんばんは、サルモリです。
今回のテーマは下記の記事について書いていきます。
今回のテーマ
グループ化する項目を複数指定する方法
今回はグループ化する項目を複数指定する方法について記述していきます。
GroupByメソッドの使用方法について、下記の記事に書いてあります。
CHECK
-
-
C# Linqは便利なので使い方を覚えよう。GroupByを使ってグループ化しよう。
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです。 今回もLinqのメソッドを紹介してきます。今回紹介するメソッド ...
続きを見る
タプルを使用したグループ化について更に詳しくした記事を書きました。
CHECK
-
-
C# Linq タプルとGroupbyを組み合わせて複数項目のグループに分ける方法 とても便利!
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんにちは、サルモリです。 今回の記事はGroupbyとタプルを組み合わせて、複数項目のグ ...
続きを見る

他のLinqの記事についてはこちら
今回使用するクラス
今回使用するクラスです。今回もロボットクラスを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class Robot { string name, color,maker; int strength; public Robot(string _name,string _color,int _strength,string _maker) { name = _name; color = _color; strength = _strength; maker = _maker; } public String Name { get { return name; } } public String Color { get { return color; } } public int Strength { get { return strength; } } public String Maker { get { return maker; } } } } |
複数項目でグループ化する方法
早速、複数項目でグループ化するソースコードを書いていきます。
色と作成者別でグループ化をしてみます。
色と作成者別でグループ化を行う方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Blue", 4,"Dr Light")); robotlist.Add(new Robot("Fireman", "Red", 3,"Dr Wily")); robotlist.Add(new Robot("Iceman", "Blue", 3, "Dr Wily")); robotlist.Add(new Robot("Elecman", "Yellow", 4, "Dr Wily")); robotlist.Add(new Robot("Roll", "Pink", 1, "Dr Light")); robotlist.Add(new Robot("Airman", "Blue", 2, "Dr Wily")); robotlist.Add(new Robot("Woodman", "Green", 2, "Dr Wily")); robotlist.Add(new Robot("Quickman", "Red", 5, "Dr Wily")); robotlist.Add(new Robot("Shadowman", "Blue", 5, "Dr Wily")); robotlist.Add(new Robot("Bubbleman", "Green", 3, "Dr Wily")); var groupcolormakerlist = robotlist.GroupBy(x => new { x.Color, x.Maker }).ToList(); foreach (var colormakerlist in groupcolormakerlist) { foreach (var item in colormakerlist) { Console.WriteLine("Color:" + item.Color + " Maker:" + item.Maker + "Name:" + item.Name); } Console.WriteLine("---------------------------------------------"); } } } } |
result
Color:Blue Maker:Dr LightName:Rockman
---------------------------------------------
Color:Red Maker:Dr WilyName:Fireman
Color:Red Maker:Dr WilyName:Quickman
---------------------------------------------
Color:Blue Maker:Dr WilyName:Iceman
Color:Blue Maker:Dr WilyName:Airman
Color:Blue Maker:Dr WilyName:Shadowman
---------------------------------------------
Color:Yellow Maker:Dr WilyName:Elecman
---------------------------------------------
Color:Pink Maker:Dr LightName:Roll
---------------------------------------------
Color:Green Maker:Dr WilyName:Woodman
Color:Green Maker:Dr WilyName:Bubbleman
---------------------------------------------
Groupbyメソッド内で色と作成者の2つの項目を生成することでグループ化出来ていますね。
上記のやり方ともう1つ複数項目のグループ化を行う方法があるので、紹介したいと思います。
複数項目でグループ化する方法(タプルを利用する方法)
もう一つのやり方はタプルを使用する方法です。Groupby句で2つ項目を生成した箇所をタプルに置き換えるだけです。
早速、やってみましょう。
タプルについては下記の記事が分かりやすいと思います。
こちらもCHECK
-
-
C# メソッドから2つの値を返す方法 タプルを使ってみよう
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです。 今回は下記のテーマについて書いていきます。 今回のテーマ メソ ...
続きを見る
色と作成者でグループ化を行う方法(タプルを利用する方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Blue", 4,"Dr Light")); robotlist.Add(new Robot("Fireman", "Red", 3,"Dr Wily")); robotlist.Add(new Robot("Iceman", "Blue", 3, "Dr Wily")); robotlist.Add(new Robot("Elecman", "Yellow", 4, "Dr Wily")); robotlist.Add(new Robot("Roll", "Pink", 1, "Dr Light")); robotlist.Add(new Robot("Airman", "Blue", 2, "Dr Wily")); robotlist.Add(new Robot("Woodman", "Green", 2, "Dr Wily")); robotlist.Add(new Robot("Quickman", "Red", 5, "Dr Wily")); robotlist.Add(new Robot("Shadowman", "Blue", 5, "Dr Wily")); robotlist.Add(new Robot("Bubbleman", "Green", 3, "Dr Wily")); var groupcolormakerlist = robotlist.GroupBy(x => (x.Color, x.Maker)).ToList(); foreach (var colormakerlist in groupcolormakerlist) { foreach (var item in colormakerlist) { Console.WriteLine("Color:" + item.Color + " Maker:" + item.Maker + "Name:" + item.Name); } Console.WriteLine("---------------------------------------------"); } } } } |
result
Color:Blue Maker:Dr LightName:Rockman
---------------------------------------------
Color:Red Maker:Dr WilyName:Fireman
Color:Red Maker:Dr WilyName:Quickman
---------------------------------------------
Color:Blue Maker:Dr WilyName:Iceman
Color:Blue Maker:Dr WilyName:Airman
Color:Blue Maker:Dr WilyName:Shadowman
---------------------------------------------
Color:Yellow Maker:Dr WilyName:Elecman
---------------------------------------------
Color:Pink Maker:Dr LightName:Roll
---------------------------------------------
Color:Green Maker:Dr WilyName:Woodman
Color:Green Maker:Dr WilyName:Bubbleman
---------------------------------------------
先ほどと同様に色と作成者別に出力されましたね!
まとめ
今回は複数項目のグループ化について2つ紹介しました。
個人的には、タプルを利用した方法が好きです。タプルにすると、柔軟に値を取り出したり出来ますし、理解もしやすいです。
今回の記事は短いですが、以上です。最後まで見て頂き、ありがとうございました。

新しく類似する記事を書いたので、下記の記事も是非見てください。
CHECK
-
-
C# Linq タプルとGroupbyを組み合わせて複数項目のグループに分ける方法 とても便利!
このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんにちは、サルモリです。 今回の記事はGroupbyとタプルを組み合わせて、複数項目のグ ...
続きを見る
他のLinqの記事についてはこちら