C# で複数の辞書を効率的にマージする
C# で複数の辞書を操作する場合、それらを 1 つの辞書にマージするのが一般的なタスクになることがあります。これを実現するための堅牢かつ効率的なメソッドを次に示します。
public static Dictionary<TKey, TValue> Merge<TKey, TValue>(IEnumerable<Dictionary<TKey, TValue>> dictionaries) { return dictionaries.SelectMany(dict => dict).ToDictionary(pair => pair.Key, pair => pair.Value); }
この拡張メソッドは、辞書の列挙可能なコレクションを引数として受け取り、SelectMany を使用して各辞書からすべてのキーと値のペアを選択することで、それらを 1 つの辞書にフラット化します。 。次に、フラット化されたペアのキーと値を含む ToDictionary を使用して、結果を新しい辞書に変換します。
元の辞書に重複したキーが含まれている場合、このメソッドの動作は、使用されている .NET のバージョンによって異なります。 8 より前の .NET バージョンでは、例外がスローされます。 .NET 8 以降では、新しく定義された ToDictionary オーバーロードは重複キーを無視します。
より高度なシナリオでは、ToLookup を使用して、キーごとに複数の値を許可する検索辞書を作成することもできます。ただし、提供されているリファレンス コードで示されているように、これを一意のキーを持つ辞書に変換するには追加の手順が必要です。
重複キーを上書きするか、別の方法で処理するかにかかわらず、重要な洞察は、LINQ の機能を活用することです。 SelectMany 演算子を使用して辞書をフラット化し、新しい辞書を効率的に作成します。
以上がC#で複数の辞書を効率的にマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。