2010-10-19 7 views
64

J'ai un problème en essayant de convertir un dictionnaire en liste. Exemple si j'ai un dictionnaire avec une chaîne de modèle en tant que clé et une chaîne en tant que valeur. Ensuite, je souhaite convertir la clé du dictionnaire en liste de collection sous forme de chaîne.Convertir le dictionnaire en liste de collection en C#

Dictionary<string, string> dicNumber = new Dictionary<string, string>(); 
List<string> listNumber = new List<string>(); 

dicNumber.Add("1", "First"); 
dicNumber.Add("2", "Second"); 
dicNumber.Add("3", "Third"); 

// So the code may something look like this 
//listNumber = dicNumber.Select(??????); 
+5

Demandez-vous une liste de clés du dictionnaire? Si oui, il y a une propriété Keys sur le dictionnaire qui vous donnera cela. –

Répondre

123

Pour convertir les clés d'une liste de leurs propres:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList(); 

Ou vous pouvez raccourcir up et même pas la peine d'utiliser select:

listNumber = dicNumber.Keys.ToList(); 
+0

@Brian - J'y arrivais dans mon édition. Je voulais d'abord montrer la méthode select puisque c'était ce que l'OP demandait et ensuite montrer l'alternative. :-) –

+0

Alors j'ai pensé, alors j'ai supprimé mon commentaire. –

+1

c'était vraiment utile. J'avais besoin d'appliquer .Where (...) à la dict avant de retourner les clés, mais cette méthode ne renvoie pas un dictionnaire, donc je ne pouvais pas accéder à la propriété Keys. en utilisant cette sélection après l'où travaillé très bien –

12

Si vous souhaitez utiliser LINQ, vous pouvez utiliser l'extrait suivant:

var listNumber = dicNumber.Keys.ToList(); 
4
foreach (var item in dicNumber) 
{ 

    listnumber.Add (item.Key); 

} 
+0

Pourquoi pas à la fin :) –

17

Autre possibilité:

var keys = new List<string>(dicNumber.Keys); 
+1

Travailler avec le .NET Compact Framework 2.0 (donc pas Linq) c'était la meilleure option pour moi. –

3

Si tu veux passer la collection Les clés de dictionnaire en un seul argument de méthode.

List<string> lstKeys = Dict.Keys; 
Methodname(lstKeys); 
------------------- 
void MethodName(List<String> lstkeys) 
{ 
    `enter code here` 
    //Do ur task 
} 
3

Si vous voulez convertir clés:

List<string> listNumber = dicNumber.Keys.ToList(); 

autre si yuo veulent convertir les valeurs:

List<string> listNumber = dicNumber.Values.ToList(); 
-1
class NumberClass { 
    int Digits { get; set; } 
    string Chars { get; set; } 
    string CharsLower { get; set; } 
} 

var dicNumber = new Dictionary<string, string> { 
    {"1", "First"}, 
    {"2", "Second"}, 
    {"3", "Third"} 
} 

var listNumber = dicNumber.Select(number => new NumberClass { 
    Digits = Convert.ToInt32(number.Key), 
    Chars = number.Value, 
    CharsLower = number.Value.ToLower() 
}).ToList(); 

listNumber est une liste des NumberClass-es où pour le premier enregistrement Les chiffres sont égaux à 1, les caractères égaux à "Premier" et les caractères "CharsLower" à "premiers"

Questions connexes