977228 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

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

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

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2024.04.27
XML
カテゴリ:C#.NET


`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}");

    }

}

```


このコードは、文字の最初の文字に基づいて文字列をグループ化します。各グループには、そのキーに関連付けられた文字列が含まれています。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.04.27 10:36:15



© Rakuten Group, Inc.
X