練習問題を始める前に
こんにちは、サルモリです。Linqの練習問題を載せていきます。今回の記事は中級編2です。
イメージがしにくいGroupByの問題を沢山解いてマスターしていきましょう!!
下記に演習問題をまとめてあります。他の問題もどんどん解いてみてください。
他の演習問題はこちら
LinqのGroupByは比較的理解しにくいと思いますが、頑張って知識を付けていってください!

演習問題を解く前に下記のソースコードをコピーして貼り付け
下記のソースコードを貼り付けてください。Program.csファイルでもRobot.csファイルを作成して貼り付けても問題ありません。
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 |
//下記のロボットクラスをコピーして、貼り付けて下さい。 class Robot { string name, maker, color; int strength; public Robot(string _name,string _maker,string _color,int _strength) { name = _name; maker = _maker; color = _color; strength = _strength; } public string getName() { return name; } public string getMaker() { return maker; } public string getColor() { return color; } public int getstrength() { return strength; } } |

第1問
ロボット名をメーカー別に出力してください。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Mr Light", "Blue", 5)); robotlist.Add(new Robot("Quickman", "Mr Wily", "Red", 5)); robotlist.Add(new Robot("Airman", "Mr Wily", "Blue", 3)); robotlist.Add(new Robot("Rollchan", "Mr Light", "Pink", 1)); robotlist.Add(new Robot("Woodman", "Mr Wily", "Green", 3)); robotlist.Add(new Robot("Bubbleman", "Mr Wily", "Green", 4)); robotlist.Add(new Robot("Fireman", "Mr Wily", "Red", 3)); robotlist.Add(new Robot("Iceman", "Mr Wily", "Blue", 4)); robotlist.Add(new Robot("Heatman", "Mr Wily", "Red", 2)); //**************ここからコードを書いて下さい************** var makerrobots = //**************ここまでコードを書いて下さい************** foreach (var robots in makerrobots) { foreach(var robot in robots) { Console.WriteLine(robot.getName()); } Console.WriteLine("-------------"); } } } |
出力結果
Rockman
Rollchan
-------------
Quickman
Airman
Woodman
Bubbleman
Fireman
Iceman
Heatman
-------------
+ 問題1の解答例はこちら
メーカー別に出力するためには、GroupByメソッド内にGetMakerメソッドを指定することで実現できます。GroupByメソッドによって、大きいリスト内にメーカー別の小さなリストがあるイメージをするとわかりやすいと思います。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Mr Light", "Blue", 5)); robotlist.Add(new Robot("Quickman", "Mr Wily", "Red", 5)); robotlist.Add(new Robot("Airman", "Mr Wily", "Blue", 3)); robotlist.Add(new Robot("Rollchan", "Mr Light", "Pink", 1)); robotlist.Add(new Robot("Woodman", "Mr Wily", "Green", 3)); robotlist.Add(new Robot("Bubbleman", "Mr Wily", "Green", 4)); robotlist.Add(new Robot("Fireman", "Mr Wily", "Red", 3)); robotlist.Add(new Robot("Iceman", "Mr Wily", "Blue", 4)); robotlist.Add(new Robot("Heatman", "Mr Wily", "Red", 2)); //**************ここからコードを書いて下さい************** var makerrobots = robotlist.GroupBy(n => n.getMaker()); //**************ここまでコードを書いて下さい************** foreach (var robots in makerrobots) { foreach(var robot in robots) { Console.WriteLine(robot.getName()); } Console.WriteLine("-------------"); } } } |
下記の記事で詳しく書いております。
こちらもCHECK
-
-
【C# sharp Linq】GroupByを使ってグループ化しよう。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る

第2問
ロボット名を色別に出力してください。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Mr Light", "Blue", 5)); robotlist.Add(new Robot("Quickman", "Mr Wily", "Red", 5)); robotlist.Add(new Robot("Airman", "Mr Wily", "Blue", 3)); robotlist.Add(new Robot("Rollchan", "Mr Light", "Pink", 1)); robotlist.Add(new Robot("Woodman", "Mr Wily", "Green", 3)); robotlist.Add(new Robot("Bubbleman", "Mr Wily", "Green", 4)); robotlist.Add(new Robot("Fireman", "Mr Wily", "Red", 3)); robotlist.Add(new Robot("Iceman", "Mr Wily", "Blue", 4)); robotlist.Add(new Robot("Heatman", "Mr Wily", "Red", 2)); //**************ここからコードを書いて下さい************** var colorrobots = //**************ここまでコードを書いて下さい************** foreach (var robots in colorrobots) { foreach(var robot in robots) { Console.WriteLine(robot.getName() + ":" + robot.getColor()); } Console.WriteLine("-------------"); } } } |
出力結果
Rockman:Blue
Airman:Blue
Iceman:Blue
-------------
Quickman:Red
Fireman:Red
Heatman:Red
-------------
Rollchan:Pink
-------------
Woodman:Green
Bubbleman:Green
-------------
+ 問題2の解答例はこちら
問題1とほぼ同じです。今回は色別に出力するので、GetColorを指定してあげましょう。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Robot> robotlist = new List<Robot>(); robotlist.Add(new Robot("Rockman", "Mr Light", "Blue", 5)); robotlist.Add(new Robot("Quickman", "Mr Wily", "Red", 5)); robotlist.Add(new Robot("Airman", "Mr Wily", "Blue", 3)); robotlist.Add(new Robot("Rollchan", "Mr Light", "Pink", 1)); robotlist.Add(new Robot("Woodman", "Mr Wily", "Green", 3)); robotlist.Add(new Robot("Bubbleman", "Mr Wily", "Green", 4)); robotlist.Add(new Robot("Fireman", "Mr Wily", "Red", 3)); robotlist.Add(new Robot("Iceman", "Mr Wily", "Blue", 4)); robotlist.Add(new Robot("Heatman", "Mr Wily", "Red", 2)); //**************ここからコードを書いて下さい************** var colorrobots = robotlist.GroupBy(n => n.getColor()); //**************ここまでコードを書いて下さい************** foreach (var robots in colorrobots) { foreach(var robot in robots) { Console.WriteLine(robot.getName() + ":" + robot.getColor()); } Console.WriteLine("-------------"); } } } |
下記の記事にGroupByメソッドについて解説しています。
こちらもCHECK
-
-
【C# sharp Linq】GroupByを使ってグループ化しよう。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る