Fusionner efficacement plusieurs dictionnaires en C#
Lorsque vous travaillez avec plusieurs dictionnaires en C#, les fusionner en un seul dictionnaire peut être une tâche courante. Voici une méthode robuste et efficace pour y parvenir :
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); }
Cette méthode d'extension prend une collection énumérable de dictionnaires comme argument et les aplatit en un seul dictionnaire en sélectionnant toutes les paires clé-valeur de chaque dictionnaire à l'aide de SelectMany. . Il convertit ensuite le résultat en un nouveau dictionnaire à l'aide de ToDictionary avec les clés et les valeurs des paires aplaties.
Si les dictionnaires d'origine contiennent des clés en double, le comportement de cette méthode dépend de la version de .NET utilisée. Dans les versions .NET antérieures à 8, une exception sera levée. Dans .NET 8 et versions ultérieures, la surcharge ToDictionary nouvellement définie ignorera les clés en double.
Pour des scénarios plus avancés, vous pouvez également utiliser ToLookup pour créer un dictionnaire de recherche autorisant plusieurs valeurs par clé. Cependant, la conversion en un dictionnaire avec des clés uniques nécessite des étapes supplémentaires, comme démontré dans le code de référence fourni.
Que vous choisissiez d'écraser les clés en double ou de les gérer différemment, l'idée clé est d'exploiter la puissance de LINQ. Opérateur SelectMany pour aplatir les dictionnaires et en créer un nouveau efficacement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!