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」となります。
つまり、配列(onePiecesList)にToLookupを適用し、配列をグループ分けした結果をを出力(Console.WriteLine)するということです。
このようにして、C#では