構文:
C# の ToDictionary 関数の次の構文内で提供される各コンポーネントを 1 つずつ分解して理解しましょう。
辞書でした = コレクション。 辞書へ ( キーセレクター 、 要素セレクター ) ;
- ここでは、「var」キーワードがキャストオフされ、結果として得られる「dict」辞書の型カテゴリを定義します。ほとんどの場合、これは Dictionary
です。ここで、K はキーの型、V はディクショナリ値の型カテゴリです。 - 「collection」要素は、「dict」辞書に変換するソース コレクションを表します。リスト、配列、クエリ結果など、IEnumerable
インターフェイスを実装する任意のクラスを指定できます。 - 「keySelector」キーワードは、コレクション内の各項目からキーを抽出する方法を指定するデリゲートまたはラムダ式です。引数としてコレクションから要素を取得し、その項目のキー値を返します。辞書は重複したキーを持つことができないため、キーはコレクション内の各項目に対して一意である必要があります。
- 「elementSelector」キーワードは、コレクション内の各項目から値を抽出する方法を指定するデリゲートまたはラムダ式を指します。また、コレクションの要素を引数として取得し、その項目の値を生成します。
ToDictionary 関数を実行すると、コレクションの各項目がキーと値のペアとして表される新しい辞書オブジェクトが作成されます。
例 1:
コード例を使用して、C# での ToDictionary 関数の使用法をデモンストレーションすることで、このガイドを新たに始めてみましょう。段階的に見ていきましょう。
コードは、インポートされる必要な名前空間 (System、System.Collections.Generic、および System.Linq) から始まります。これらの名前空間は、コレクションと LINQ を操作するために必要なクラスと拡張メソッドを提供します。この C# プログラムの「Main」メソッドを含む「Dummy」クラスが定義されています。
「Main」メソッド内で、「L」という名前のリストが作成されます。このリストには、ユーザーが選択したさまざまな香水の名前を表す 3 つの文字列要素が含まれています。 ToDictionary メソッドは「L」リストで呼び出されます。リストを辞書に変換します。リスト内の各文字列要素は、結果として得られる辞書内のキーと値の両方として機能します。
ディクショナリは、StringComparer.OrdinalIgnoreCase パラメーターを使用して、大文字と小文字を区別しないキー比較で作成されます。このパラメーターは、主に、キーの存在を確認するときに大文字と小文字を区別しない比較を指定するために使用されます。 「if」ステートメントは、大文字と小文字を区別せずに、辞書に「bombshell」キーが含まれているかどうかをチェックします。キーが見つかった場合は、「if」セクション内のコード スニペットが処理されます。 「if」ブロック内で Console.WriteLine(“Bombshell が存在します”) ステートメントが実行され、「Bombshell が存在します」というメッセージがコンソールに出力されます。
システムを使用して ;システムを使用して。 コレクション 。 ジェネリック ;
システムを使用して。 リンク ;
クラスダミー
{
静的 空所 主要 ( )
{
リスト < 弦 > L = 新しいリスト < 弦 > ( ) { 「ブラックアヘン」 、 「爆弾」 、 「グッチフローラ」 } ;
香水だった = L. 辞書へ ( バツ => バツ 、 バツ => 真実 、 文字列比較。 OrdinalIgnoreCase ) ;
もし ( 香水。 キーを含む ( 「爆弾」 ) )
{
コンソール。 ライトライン ( 「爆弾は存在する」 ) ;
}
}
}
辞書は大文字と小文字を区別しない比較で作成されるため、「bombshell」キーは辞書内の実際の「Bombshell」キーと一致します。その結果、次の添付出力画像に示すように、「Bombshell が存在します」というメッセージがコンソールに表示されます。
例 2:
前のコード例では、ToDictionary 関数を使用して単純なコレクションを辞書に変換する方法を示しました。ここで、C# の ToDictionary 関数の使用方法をデモンストレーションするために、C# の少し高度なコード例に進みます。コードを 1 行ずつ分解してみましょう。
この図のコード スニペットは、同じ必須名前空間である System、System.Collections.Generic、および System.Linq を取り込むことから始まります。これらの名前空間は、このコード例のコレクションと LINQ を操作するために必要なクラスと拡張メソッドを提供します。エントリポイントとなる「Dummy」クラスが定義されています。
C#言語の「Main」メソッド内では、「L」という名前のリストが形成されます。このリストには、さまざまな化粧品とその価格およびブランドを表す「データ」クラスの 3 つのオブジェクトが含まれています。各データ オブジェクトは、オブジェクト初期化子構文を使用して初期化されます。各オブジェクトの「価格」プロパティと「ブランド」プロパティには、特定の値が設定されます。
ここで ToDictionary メソッドが登場します。それはここでは「L」リストと呼ばれています。このリストは、「Price」プロパティがキーとして使用され、「Brand」プロパティが値として使用される辞書に変換されます。結果の辞書は、次のコード スニペットで説明されているように、「Dic」変数に割り当てられます。 「foreach」ループは、「Dic」ディクショナリ内のキーと値のペアを呼び出すためにキャストオフされます。
ループ内では、KeyValuePair
ここでは、「Data」クラスは、「Price」(化粧品の価格を表す整数)と「Brand」(商品のブランド名を表す文字列)の 2 つのプロパティで定義されています。
システムを使用して ;システムを使用して。 コレクション 。 ジェネリック ;
システムを使用して。 リンク ;
クラスダミー
{
静的 空所 主要 ( )
{
リスト < データ > L = 新しいリスト < データ > ( )
{
新しいデータ { 価格 = 13000 、 ブランド = 「フダビューティー」 } 、
新しいデータ { 価格 = 15000 、 ブランド = 「シャーロット・テルベリー」 } 、
新しいデータ { 価格 = 11000 、 ブランド = 「ナーズ」 }
} ;
辞書 < 整数 、 弦 > 12月 = L. 辞書へ ( p => p. 価格 、 p => p. ブランド ) ;
フォーリーチ ( Dic の var v )
{
コンソール。 ライトライン ( $ 「価格: {v.Key}、ブランド: {v.Value}」 ) ;
}
}
}
クラスデータ
{
公共 整数 価格 { 得る ; セット ; }
パブリック文字列 ブランド { 得る ; セット ; }
}
コードが実行されると、データ オブジェクトのリストが作成され、ToDictionary メソッドを使用してリストが辞書に変換され、「foreach」ループを使用して辞書のキーと値のペアが表示されます。
このコード例の出力を次に示します。特定のプロパティに基づいて辞書に保存されている化粧品の価格とブランドが表示され、キーと値のペアのデータを整理してアクセスするための便利な方法が提供されます。前のコードの出力には、辞書の 3 つのレコードが表示されます。
結論
この C# ガイドでは、いくつかの基本的で正確なコード図を使用して C# ToDictionary メソッドの使用法を説明しました。 ToDictionary メソッドは、キーと値のペアを記述する明確で表現力豊かなメカニズムを提供することにより、コレクションを辞書に変換することを容易にします。これは、データを操作および変換するための強力な C# ユーティリティです。