【C#入門】GroupByの使い方を解説【LINQ】


C#の『GroupBy』の使い方が分からない…教えてください!


C#を学んでいるけど…

GroupByの使い方が分からない

このような疑問を持っていませんか?

この記事では、LINQのひとつである『GroupBy』について現役エンジニアが分かりやすく解説します。

まだ、C#の開発環境構築が出来ていない方はこちらを参考にしてください。

GroupByの使い方

GroupByの使い方を解説する前に、GroupByで何が出来るのかを把握しておきましょう。

GroupBy = 配列グループ分けする

このような考え方で問題ありません。GroupByを使用すると指定した配列を指定したキーを基にグループ分けして出力することが出来ます

それでは、実際のコードを用いながらGroupByの使い方を解説していきます。

まずは、GroupByの使い方から説明します。GroupByを使うときには以下のように記述します。

配列.GroupBy(キー値)

実際のコードを用いながらGroupByの使い方を解説していきます。

GroupByを使ってシーケンスを出力するときには以下のように記述します。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace sample
{
    class LinqGroupBy
    {
        private class OnePiece
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Belong { get; set; }
        }
        static public void BlogLinqGroupBy()
        {
            // リストを宣言・初期化
            List<OnePiece> onePiecesList = new List<OnePiece>
            {
                new OnePiece { Id = 0, Name = "モンキー・D・ルフィ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 1, Name = "ロロノア・ゾロ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 2, Name = "ナミ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 3, Name = "ウソップ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 4, Name = "ヴィンスモーク・サンジ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 5, Name = "トニートニー・チョッパー", Belong = "麦わら海賊団" },
                new OnePiece { Id = 6, Name = "ニコ・ロビン", Belong = "麦わら海賊団" },
                new OnePiece { Id = 7, Name = "フランキー", Belong = "麦わら海賊団" },
                new OnePiece { Id = 8, Name = "ブルック", Belong = "麦わら海賊団" },
                new OnePiece { Id = 9, Name = "ジンベエ", Belong = "麦わら海賊団" },
                new OnePiece { Id = 0, Name = "マーシャル・D・ティーチ", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 1, Name = "ジーザス・バージェス", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 2, Name = "シリュウ", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 3, Name = "ヴァン・オーガー", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 4, Name = "アバロ・ピサロ", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 5, Name = "ラフィット", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 6, Name = "カタリーナ・デボン", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 7, Name = "サンファン・ウルフ", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 8, Name = "バスコ・ショット", Belong = "黒ひげ海賊団" },
                new OnePiece { Id = 9, Name = "ドクQ", Belong = "黒ひげ海賊団" },
            };

            var onePieceBelong = onePiecesList.GroupBy(x => x.Belong);

            // GroupByの実行結果を出力
            foreach (var group in onePieceBelong)
            {
                Console.WriteLine(group.Key);
                foreach (var item in group)
                {
                    Console.WriteLine($"Id = {item.Id}, Name = {item.Name}");
                }
            }
        }
    }
}

サンプルコードを実行した際の出力結果は、以下のようになります。

麦わら海賊団
Id = 0, Name = モンキー・D・ルフィ
Id = 1, Name = ロロノア・ゾロ
Id = 2, Name = ナミ
Id = 3, Name = ウソップ
Id = 4, Name = ヴィンスモーク・サンジ
Id = 5, Name = トニートニー・チョッパー
Id = 6, Name = ニコ・ロビン
Id = 7, Name = フランキー
Id = 8, Name = ブルック
Id = 9, Name = ジンベエ
黒ひげ海賊団
Id = 0, Name = マーシャル・D・ティーチ
Id = 1, Name = ジーザス・バージェス
Id = 2, Name = シリュウ
Id = 3, Name = ヴァン・オーガー
Id = 4, Name = アバロ・ピサロ
Id = 5, Name = ラフィット
Id = 6, Name = カタリーナ・デボン
Id = 7, Name = サンファン・ウルフ
Id = 8, Name = バスコ・ショット
Id = 9, Name = ドクQ

サンプルコードを実行した際の出力結果は、以下のようになります。

配列.GroupBy(キー値)

これを基にサンプルコードを解説すると、「配列 = onePiecesList」となります。

つまり、配列onePiecesListGroupByを適用し、配列をグループ分けした結果をを出力(Console.WriteLine)するということです。

このようにして、C#ではGroupByを使用することで、配列をグループ分けするコードを簡潔に書くことが出来ます。

【まとめ】GroupByは配列をグループ分けする

GroupByの使い方は理解できましたか?

まとめ

  • GroupBy = 配列グループ分けする
  • 配列.GroupBy(キー値)

この記事では、C#のGroupByの使い方について紹介しました。

最後になりますが、ここに関してもっと詳しく教えて欲しいときなどは、遠慮なく、お問い合わせ、コメント、Twitterにてご連絡ください。

最後までお読みいただきありがとうございました。

Tech Academy

  • 受講者数No.1のプログラミングスクール
  • 通過率10%の選考に合格した優秀な講師
  • カリキュラムを閲覧制限なし
  • コースの種類が豊富
  • オンラインで完結
  • 無料体験あり
  • 無料カウンセリングあり
  • 学割あり

\ 公式サイトはこちら /

Tech Academy 公式サイト