Convertir un dictionnaire en liste

Je sais qu’il est possible de convertir une liste de KeyValuePair dans un dictionnaire, mais existe-t-il un moyen rapide (en plus de faire un bouclage manuel) pour effectuer l’opération inverse?

Ce serait la manière manuelle,

foreach (KeyValuePair p in dict) { list.Add(new KeyValuePair(p.Key,p.Value)); } 

Pas vraiment si mal mais j’étais juste curieux.

Pour convertir un Dictionary en une List> vous pouvez simplement dire

 var list = dictionary.ToList(); 

ou le plus verbeux

 var list = dictionary.ToList>(); 

En effet, Dictionary implémente IEnumerable> .

Utiliser linq:

 myDict.ToList>(); 

Les éléments du dictionnaire sont des éléments KeyValuePair .

Comme Jason l’a dit. Mais si vous n’avez pas vraiment besoin d’une liste, vous pouvez simplement la convertir en une ICollection car elle implémente cette interface, mais certaines parties seulement explicitement. Cette méthode fonctionne mieux car elle ne copie pas la liste entière, réutilise simplement la même instance de dictionnaire.

Pour .NET 2.0:

 Dictionary dictionary = new Dictionary(); List> myList = new List>(dictionary); 

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); }