Converti dizionario in raccolta di elenchi in C #


93

Ho un problema quando provo a convertire un dizionario in elenco.

Esempio se ho un dizionario con stringa modello come chiave e stringa come valore. Quindi desidero convertire la chiave del dizionario nella raccolta di elenchi come stringa.

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
Stai chiedendo un elenco di chiavi dal dizionario? Se è così, c'è una proprietà Keys su Dictionary che te lo darà.
Brian Rasmussen

Risposte:


175

Per convertire le chiavi in ​​un proprio elenco:

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

Oppure puoi accorciarlo e non preoccuparti nemmeno di usare select:

listNumber = dicNumber.Keys.ToList();

@ Brian - ci stavo arrivando nella mia modifica. Volevo mostrare prima il metodo di selezione poiché era quello che chiedeva l'OP e poi mostrare l'alternativa. :-)
Justin Niessner

Quindi ho pensato, quindi ho rimosso il mio commento.
Brian Rasmussen

1
questo è stato davvero utile. Avevo bisogno di applicare .Where (...) al dict prima di restituire le chiavi, ma quel metodo non restituisce un dizionario, quindi non ho potuto accedere alla proprietà Keys. utilizzando questa selezione dopo che ha funzionato alla grande
Martín Coll

22

In alternativa:

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

4
Lavorare con .NET Compact Framework 2.0 (quindi senza Linq) questa è stata l'opzione migliore per me.
Michael Murphy

Se non puoi usare LINQ questa opzione sembra la migliore.
user2000950

17

Se vuoi usare Linq, puoi usare il seguente frammento:

var listNumber = dicNumber.Keys.ToList();

9

Se vuoi convertire le chiavi:

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

altrimenti se vuoi convertire i valori:

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

Funzionerà, ma potrebbe non essere nell'ordine che ti aspetti, anche il dict è stato ordinato per chiavi prima, dict.Values ​​non è ...
BooNonMooN


3

Se vuoi passare la raccolta di chiavi Dictionary in un argomento del metodo.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.