Je sais qu'il est possible de convertir une liste de KeyValuePair en dictionnaire, mais existe-t-il un moyen rapide (en plus de boucler manuellement) pour effectuer l'opération vice versa?
Ce serait la manière manuelle,
foreach (KeyValuePair<double,double> p in dict)
{
list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
}
Pas vraiment si mal mais j'étais simplement curieux.
Pour convertir un Dictionary<TKey, TValue>
à un List<KeyValuePair<TKey, TValue>>
tu peux juste dire
var list = dictionary.ToList();
ou le plus bavard
var list = dictionary.ToList<KeyValuePair<TKey, TValue>>();
Ceci est dû au fait Dictionary<TKey, TValue>
met en oeuvre IEnumerable<KeyValuePair<TKey, TValue>>
.
Utilisation de linq:
myDict.ToList<KeyValuePair<double, double>>();
Éléments du dictionnaire sontKeyValuePair
éléments.
Comme l'a dit Jason. Mais si vous n'avez pas vraiment besoin d'une liste, vous pouvez simplement la convertir en une ICollection <TKey, TValue> car elle implémente cette interface, mais certaines parties uniquement de manière explicite. Cette méthode fonctionne mieux car elle ne copie pas la liste entière, réutilise simplement la même instance de dictionnaire.
J'ai essayé d'énumérer une instance d'Exception.Data qui est un IDictionary. C'est ce qui a finalement fonctionné:
ICollection keys = idict.Keys;
foreach(var key in keys)
{
var value = idict[key];
Console.WriteLine("{0}: {1}", key, value);
}
Pour .NET 2.0:
Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();
List<KeyValuePair<TKey, TValue>> myList = new List<KeyValuePair<TKey, TValue>>(dictionary);