C#のLinqのメソッド一覧

【C# sharp Linq】Groupby後に2番目に大きい(小さい)レコードを取得する方法

ChatGPTのAPIを使わずに自動化することが可能です。
下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。

今回のテーマ

今回はLinqのGroupbyをした後に各グループから2番目に大きい(小さい)レコードを

取り出す方法を解説していきます。

意外と2番目や3番目の要素を取り出したい場面って多いですよね。

その度に検索しますが、意外と見つからないんですよね。

この記事では、Groupby後の各グループから2番目に大きいレコードを取り出すことを目標とします。

早速やっていきましょう!!

サルモリ
2番目以降のレコードを取得してみるよ!!

配列から2番目に大きい要素を取り出してみよう

まずはLinqを使用し、下記の配列から2番目に大きい値を出力してみます。

2番目に大きい5を出力することが出来れば良さそうですね。

int[] numbers = { 2, 5, 4, 6, 3, 1 }; 

最大値や最小値を導くには、MaxやMinを使用することで、取得することができますが、

2番目に大きなメソッドを取得するメソッドは用意されていません。

色々考えた所、下記のようにLinqメソッドを組み合わせることで、実現することが出来ました。

 出力結果
5

3つのメソッドを組み合わせて実現することが出来ました。各メソッドの処理は下記の通りです。

step
1
OrderByDescending

配列の要素を降順に並べる。

6,5,4,3,2,1

step
2
Skip

1つ目の要素を飛ばす。

5,4,3,2,1

step
3
FirstOrDefault

1つ目の要素のみ取得する。

以上の流れで二つ目に大きい数を取得することが出来ましたね。

ソートを行って実現しているため、膨大な量の要素を持っている配列やリストで使う時は要注意です。

上記の処理をGroupBy後の各グループにも使ってみましょう。

性能を重視する処理で使用する場合は、気を付けるんだよ!
サルモリ

ロボットリストのGroupBy後に各グループで2つ目に大きい要素を取り出してみよう。

それでは、下記のロボットクラスを用いて2番目に大きいレコードのみ出力してみましょう。

今回は色別のグループに分けて、各グループの2番目に強いロボット名を出力してみます。

step
1
使用するロボットクラス

step
2
ロボットリストに追加するレコード

step
3
色別にグループ化

var colorrobots = robotlist.GroupBy(n => n.getColor()); 

step
4
色別のグループ2番目に強いロボットのみ出力

グループ化したリストに対して、上記で使用したメソッドの組み合わせを使用しましょう!

各グループに2体以上のロボットが存在しない場合はnullが返されるので除外します。

まとめ(全体のソースコード)

以上を纏めると、下記のようなコードになりました。

 出力結果
Iceman
-------------
Fireman
-------------
-------------
Woodman
-------------

色別で2番目に強いロボット名のみ表示されていますね。ピンクの場合は2体以上いないので、空白で出力されています。

因みにSkipの値を変更すれば、3番目、4番目も同様に取得することが出来るので、是非使ってみてくださいね。

サルモリ
今回の記事は以上だよ!!

今回使用したメソッドについて、下記の記事で詳しく解説しています。

参考【C# sharp Linq】Count、SequenceEqual、FirstOrDefault、LastOrDefaultメソッドを解説します。

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

参考【C# sharp Linq】Take、Skip、TakeWhile、SkipWhileメソッドを解説します。

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

参考【C# sharp Linq】Distinct、OrderBy、OrderByDescendingメソッドを解説します。

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

-C#のLinqのメソッド一覧

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock