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


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


C#を学んでいるけど…

ToLookupの使い方が分からない

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

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

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

ToLookupの使い方

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

ToLookup = 配列を2つのグループに分ける

このような考え方で問題ありません。ToLookupを使用すると指定した配列を指定した条件に当てはまるグループと当てはまらないグループに分けることが出来ます

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

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

配列.ToLookup(条件文)

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

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

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

namespace sample
{
    class LinqToLookup
    {
        static string StrawPirates = "麦わら海賊団";

        private class OnePiece
        {
            public string Name { get; set; }
            public string Belong { get; set; }
        }
        static public void BlogLinqToLookup()
        {
            // リストを宣言・初期化
            List<OnePiece> onePiecesList = new List<OnePiece>
            {
                new OnePiece {Name = "モンキー・D・ルフィ", Belong = "麦わら海賊団" },
                new OnePiece {Name = "キャベンディッシュ", Belong = "美しき海賊団" },
                new OnePiece {Name = "バルトロメオ", Belong = "バルトクラブ" },
                new OnePiece {Name = "サイ", Belong = "八宝水軍" },
                new OnePiece {Name = "イデオ", Belong = "イデオ海賊団" },
                new OnePiece {Name = "レオ", Belong = "トンタッタ海賊団" },
                new OnePiece {Name = "ハイルディン", Belong = "新巨兵海賊団" },
                new OnePiece {Name = "オオロンブス", Belong = "ヨンタマリア大船団" },
            };

            // 「麦わら海賊団」とそれ以外に分ける
            var onePieceBelong = onePiecesList.ToLookup(x => x.Belong == StrawPirates);

            // ToLookupの実行結果を出力
            // ToLookupの条件文でTrueのグループ(麦わら海賊団)を表示
            Console.WriteLine($"-----麦わら海賊団-----");
            foreach (var item in onePieceBelong[true])
            {
                Console.WriteLine($"Name = {item.Name}, Belong = {item.Belong}");
            }

            // ToLookupの条件文でFalseのグループ(麦わら海賊団以外)を表示
            Console.WriteLine($"-----麦わら海賊団以外-----");
            foreach (var item in onePieceBelong[false])
            {
                Console.WriteLine($"Name = {item.Name}, Belong = {item.Belong}");
            }
        }
    }
}

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

-----麦わら海賊団-----
Name = モンキー・D・ルフィ, Belong = 麦わら海賊団
-----麦わら海賊団以外-----
Name = キャベンディッシュ, Belong = 美しき海賊団
Name = バルトロメオ, Belong = バルトクラブ
Name = サイ, Belong = 八宝水軍
Name = イデオ, Belong = イデオ海賊団
Name = レオ, Belong = トンタッタ海賊団
Name = ハイルディン, Belong = 新巨兵海賊団
Name = オオロンブス, Belong = ヨンタマリア大船団

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

配列.ToLookup(条件文)

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

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

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

【まとめ】ToLookupは配列を2つのグループに分ける

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

まとめ

  • ToLookup = 配列を2つのグループに分ける
  • 配列.ToLookup(条件文)

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

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

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

Tech Academy

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

\ 公式サイトはこちら /

Tech Academy 公式サイト