2010-11-19 7 views
1

Est-il possible de convertir un dictionnaire à clé énumérée en un dictionnaire à clé entière? (Ou un constructeur de copie fonctionnerait très bien pour ce que je fais aussi bien.) En d'autres termes, quelque chose qui ressemble à:Coulée de dictionnaire

Dictionary<int, string> NewDictionary = 
    (Dictionary<int, string>)OldDictionary<MyEnum, string>; 

(Oui, je sais que la syntaxe est pas tout à fait correct, il est juste de montrer ce qu'il est je viens de)

Répondre

5

Vous pouvez itérer sur le dictionnaire et construire un nouveau, transformant chaque clé (par exemple en utilisant l'extension Enumerable.ToDictionary):.

OldDictionary.ToDictionary(x => ((int)x.Key, x => x.Value); 
+0

dictionnaire n'est pas covariant – Kikaimaru

+0

Oui, je suis. Merci pour les différentes méthodes! – RobinHood70

+0

@Kikaimaru: Bien sûr? Je n'ai pas vérifié, j'ai juste supposé que ce serait possible. D'un autre côté, il serait judicieux de ne pas autoriser cela car il change de manière significative la sémantique du type, par exemple vous pourriez obtenir des collisions de clés, etc., et le hachage est différent, ce qui rend l'opération ridiculement coûteuse. –