「東雲 忠太郎」の平凡な日常のできごと

2024/04/27(土)10:36

`ToLookup`メソッドは、LINQ(Language Integrated Query)を使用

C#.NET(1062)

`ToLookup`メソッドは、LINQ(Language Integrated Query)を使用して、コレクションからキーに基づいてグループ化されたデータのコレクションを生成するための便利な機能です。以下に、`ToLookup`の使用方法とその動作に関する解説を提供します: ### 使用方法 1. **メソッドのシグネチャ**:    ```csharp    public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(        this IEnumerable<TSource> source,        Func<TSource, TKey> keySelector,        Func<TSource, TElement> elementSelector    );    ``` 2. **引数**:    - `source`: グループ化する元のコレクション(`IEnumerable<T>`)    - `keySelector`: グループ化のためのキーを選択する関数    - `elementSelector`: 各要素から値を抽出するオプションの関数 3. **戻り値**:    - `ILookup<TKey, TElement>`: キーとそのキーに関連付けられた要素のコレクションを持つ、グループ化されたデータ構造 ### 動作 1. **グループ化**:    - `keySelector`によって指定されたキーに基づいて、元のコレクションがグループ化されます。 2. **要素の抽出**:    - オプションで`elementSelector`を指定することができます。指定しない場合、元の要素がそのままグループ化されます。    - 指定された場合、各要素から値を抽出し、グループ化されたデータにはこれらの値が含まれます。 3. **データ構造**:    - `ILookup<TKey, TElement>`は、キーとそのキーに関連付けられた要素のコレクションを持つ、シーケンスのグループ化されたデータ構造です。    - `ILookup`はディクショナリと似ていますが、1つのキーに複数の値を関連付けることができます。 4. **例外の処理**:    - `ILookup`はインデクサーを持ち、存在しないキーにアクセスした場合、例外をスローするのではなく、空のシーケンスを返します。 ### 使用例 ```csharp var source = new List<string> { "apple", "banana", "cherry", "orange", "grape", "banana" }; var lookup = source.ToLookup(x => x[0]); foreach (var group in lookup) {     Console.WriteLine($"Key: {group.Key}");     foreach (var item in group)     {         Console.WriteLine($"  {item}");     } } ``` このコードは、文字の最初の文字に基づいて文字列をグループ化します。各グループには、そのキーに関連付けられた文字列が含まれています。

続きを読む

このブログでよく読まれている記事

もっと見る

総合記事ランキング

もっと見る