今回のテーマ
こんばんは、サルモリです!今回はポケモンクラスを作成して、Linqのメソッドを沢山使っていく記事です!!
クラス、リスト、タプル、Linqの使い方などをポケモンを使って、楽しく使い方を覚えていきましょう!
何回も見直してLinqメソッドの処理の動きを覚えちゃってください!!
Linqの解説などは別の記事でしているので、この記事では淡々とLinqメソッドを使うソースコードと処理結果を記述していきます。
ぼんやりと眺めているだけでも、効果があると思うので、楽しんでソースコードを考えてみてくださいね!!
勿論コピペをして、動作確認しても構いません!!
それではソースコードを見ていきましょう!!
今回使用するポケモンクラスについて
今回使用するポケモンクラスです。ポケモンクラスについて簡単に説明。
ポケモンクラスの属性はstring型で名前、タイプ1、タイプ2、タプル型で種族値を持っています。
各属性に対し、getterのプロパティを持っています。
眺めてソースコードをみてもらうことを目的としているので、日本語の変数名にしています!
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 Pokemon { Pokemon(string _名前,string _タイプ1, string _タイプ2, (int HP,int こうげき,int ぼうぎょ,int とくこう,int とくぼう,int すばやさ) _種族値) { 名前 = _名前; タイプ1 = _タイプ1; タイプ2 = _タイプ2; 種族値 = _種族値; } public string 名前 { get; } public string タイプ1 { get; } public string タイプ2 { get; } public (int HP, int こうげき, int ぼうぎょ, int とくこう, int とくぼう, int すばやさ) 種族値 { get; } } |
このポケモンクラスを使ってLinqメソッドをどんどん使っていきましょう!!
ポケモンの名前のみ出力(Selectメソッド)
LinqのSelectメソッドを使用して、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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine(name); } } } |
出力結果
フシギバナ
リザードン
カメックス
ライチュウ
カイリキー
ウツボット
ドククラゲ
ゲンガー
スターミー
シャワーズ
サンダース
ブースター
-
Selectメソッドの動きについてはこちら【C# sharp Linq】Selectメソッド、Whereメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#言語のL ...
続きを見る
ポケモンの名前、タイプ1、タイプ2を出力(Selectメソッド)
LinqのSelectメソッドを使用して、複数の属性を出力する方法です。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var nametypelist = pokemonlist.Select(x => new{ x.名前,x.タイプ1,x.タイプ2 }); foreach (var nametype in nametypelist) { Console.WriteLine("名前:" + nametype.名前 + " タイプ1:" + nametype.タイプ1 + " タイプ2:" + nametype.タイプ2); } } } |
出力結果
名前:フシギバナ タイプ1:どく タイプ2:くさ
名前:リザードン タイプ1:ほのお タイプ2:ひこう
名前:カメックス タイプ1:みず タイプ2:
名前:ライチュウ タイプ1:でんき タイプ2:
名前:カイリキー タイプ1:かくとう タイプ2:
名前:ウツボット タイプ1:くさ タイプ2:どく
名前:ドククラゲ タイプ1:みず タイプ2:どく
名前:ゲンガー タイプ1:ゴースト タイプ2:どく
名前:スターミー タイプ1:みず タイプ2:エスパー
名前:シャワーズ タイプ1:みず タイプ2:
名前:サンダース タイプ1:でんき タイプ2:
名前:ブースター タイプ1:ほのお タイプ2:
ポケモンの名前、タイプ1、タイプ2を出力(Selectメソッド、タプル)
LinqのSelectメソッドを使用して、複数の属性を出力する方法です。今回はタプルを使用した方法です。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var nametypelist = pokemonlist.Select(x => (x.名前,x.タイプ1,x.タイプ2)); foreach (var nametype in nametypelist) { Console.WriteLine("名前:" + nametype.名前 + " タイプ1:" + nametype.タイプ1 + " タイプ2:" + nametype.タイプ2); } } } |
出力結果
名前:フシギバナ タイプ1:どく タイプ2:くさ
名前:リザードン タイプ1:ほのお タイプ2:ひこう
名前:カメックス タイプ1:みず タイプ2:
名前:ライチュウ タイプ1:でんき タイプ2:
名前:カイリキー タイプ1:かくとう タイプ2:
名前:ウツボット タイプ1:くさ タイプ2:どく
名前:ドククラゲ タイプ1:みず タイプ2:どく
名前:ゲンガー タイプ1:ゴースト タイプ2:どく
名前:スターミー タイプ1:みず タイプ2:エスパー
名前:シャワーズ タイプ1:みず タイプ2:
名前:サンダース タイプ1:でんき タイプ2:
名前:ブースター タイプ1:ほのお タイプ2:
こうげきが100以上のポケモンのみ出力(Selectメソッド、Whereメソッド)
Whereメソッドを使用して、100以上のポケモンを抽出しています。こうげきは種族値のタプル内に含まれているので、種族値.こうげきと指定しています。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Where(x => x.種族値.こうげき >= 100).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:カイリキー
名前:ウツボット
名前:ブースター
-
Whereメソッドの動きについてはこちら【C# sharp Linq】Selectメソッド、Whereメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#言語のL ...
続きを見る
こうげきが100以上かつぼうぎょが80以上のポケモンのみ出力(Selectメソッド、Whereメソッド)
Whereメソッド内で複数条件を指定します。if文を使用した要領で出来るので使いやすいと思います。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Where(x => x.種族値.こうげき >= 100 && x.種族値.ぼうぎょ >= 80).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:カイリキー
単タイプのポケモンのみ出力(Selectメソッド、Whereメソッド)
単タイプのポケモンを出力するためにはWhereメソッドでタイプ2がnullであるポケモンを条件とします。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Where(x => x.タイプ2 == null).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:カメックス
名前:ライチュウ
名前:カイリキー
名前:シャワーズ
名前:サンダース
名前:ブースター
名前にーがついているポケモンのみ出力(Selectメソッド、Whereメソッド)
Whereメソッド内でContainsメソッドを使用します。WhereメソッドとContainsメソッドは比較的セットで使う場面が多いです。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Where(x => x.名前.Contains("ー")).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:リザードン
名前:カイリキー
名前:ゲンガー
名前:スターミー
名前:シャワーズ
名前:サンダース
名前:ブースター
最後がーで終わるポケモンのみ出力(Selectメソッド、Whereメソッド)
最後の文字列を指定したい場合は、Whereメソッド内でEndsWithメソッドを使用します。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.Where(x => x.名前.EndsWith("ー")).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:カイリキー
名前:ゲンガー
名前:スターミー
名前:ブースター
すばやさが早い順に並び替えてポケモン名を出力する。(Selectメソッド、OrderByDescendingメソッド)
降順に並べる場合はOrderByDescendingメソッドを使用します。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.OrderByDescending(x => x.種族値.すばやさ).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:サンダース
名前:スターミー
名前:ライチュウ
名前:ゲンガー
名前:リザードン
名前:ドククラゲ
名前:フシギバナ
名前:カメックス
名前:ウツボット
名前:シャワーズ
名前:ブースター
名前:カイリキー
すばやさが遅い順に並び替えてポケモン名を出力する。(Selectメソッド、OrderByメソッド)
昇順に並べる場合はOrderByDescendingメソッドを使用します。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namelist = pokemonlist.OrderBy(x => x.種族値.すばやさ).Select(x => x.名前); foreach (var name in namelist) { Console.WriteLine("名前:" + name); } } } |
出力結果
名前:カイリキー
名前:シャワーズ
名前:ブースター
名前:ウツボット
名前:カメックス
名前:フシギバナ
名前:リザードン
名前:ドククラゲ
名前:ライチュウ
名前:ゲンガー
名前:スターミー
名前:サンダース
すばやさが早い順、ぼうぎょが高い順に並び替えてポケモン名、すばやさ、ぼうぎょを出力する。(Selectメソッド、OrderByDescendingメソッド、ThenByDescendingメソッド)
複数項目で並び替えを行う場合はOrderByメソッドの後にThenByDescendingメソッドを指定します。
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 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<Pokemon> pokemonlist = new List<Pokemon>(); pokemonlist.Add(new Pokemon("フシギバナ", "どく", "くさ", (80, 82, 83, 100, 100, 80))); pokemonlist.Add(new Pokemon("リザードン", "ほのお", "ひこう", (78, 84, 78, 109, 85, 100))); pokemonlist.Add(new Pokemon("カメックス", "みず", null, (79, 83, 100, 85, 105, 78))); pokemonlist.Add(new Pokemon("ライチュウ", "でんき", null, (60, 90, 55, 90, 80, 110))); pokemonlist.Add(new Pokemon("カイリキー", "かくとう", null, (90, 130, 80, 65, 85, 55))); pokemonlist.Add(new Pokemon("ウツボット", "くさ", "どく", (80, 105, 65, 100, 70, 70))); pokemonlist.Add(new Pokemon("ドククラゲ", "みず", "どく", (80, 70, 65, 80, 120, 100))); pokemonlist.Add(new Pokemon("ゲンガー", "ゴースト", "どく", (60, 65, 60, 130, 75, 110))); pokemonlist.Add(new Pokemon("スターミー", "みず", "エスパー", (60, 75, 85, 100, 85, 115))); pokemonlist.Add(new Pokemon("シャワーズ", "みず", null, (130, 65, 60, 110, 95, 65))); pokemonlist.Add(new Pokemon("サンダース", "でんき", null, (65, 65, 60, 110, 95, 130))); pokemonlist.Add(new Pokemon("ブースター", "ほのお", null, (65, 130, 60, 95, 110, 65))); var namesblist = pokemonlist.OrderByDescending(x => x.種族値.すばやさ).ThenByDescending(x => x.種族値.ぼうぎょ) .Select(x => "名前:" + x.名前 + " すばやさ:" + x.種族値.すばやさ + " ぼうぎょ:" + x.種族値.ぼうぎょ); foreach (var name in namesblist) { Console.WriteLine(name); } } } |
出力結果
名前:サンダース すばやさ:130 ぼうぎょ:60
名前:スターミー すばやさ:115 ぼうぎょ:85
名前:ゲンガー すばやさ:110 ぼうぎょ:60
名前:ライチュウ すばやさ:110 ぼうぎょ:55
名前:リザードン すばやさ:100 ぼうぎょ:78
名前:ドククラゲ すばやさ:100 ぼうぎょ:65
名前:フシギバナ すばやさ:80 ぼうぎょ:83
名前:カメックス すばやさ:78 ぼうぎょ:100
名前:ウツボット すばやさ:70 ぼうぎょ:65
名前:シャワーズ すばやさ:65 ぼうぎょ:60
名前:ブースター すばやさ:65 ぼうぎょ:60
名前:カイリキー すばやさ:55 ぼうぎょ:80
-
ThenByについて詳しく知りたい方はこちら【C# sharp Linq】ThenBy、ThenByDescendingを使用して、2つ以上の項目をソートする方法
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
まとめ
今回はポケモンクラスを作成して、Linqメソッドの例を沢山使っていきました。
何回も見直して、Linqメソッドを使用するときの参考にしてください。
それでは、最後まで見て頂きありがとうございました。