Converter dicionário para lista de coleção em C #


93

Tenho um problema ao tentar converter um dicionário em lista.

Exemplo se eu tiver um dicionário com string de modelo como chave e string como valor. Em seguida, desejo converter a chave do dicionário para a coleção da lista como uma string.

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
Você está pedindo uma lista de chaves do dicionário? Nesse caso, há uma Propriedade de Chaves no Dicionário que fornecerá isso.
Brian Rasmussen

Respostas:


175

Para converter as chaves em uma lista própria:

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

Ou você pode encurtá-lo e nem mesmo se preocupar em usar select:

listNumber = dicNumber.Keys.ToList();

@Brian - Eu estava chegando lá na minha edição. Eu queria mostrar o método select primeiro, pois era isso que o OP perguntou e depois mostrar a alternativa. :-)
Justin Niessner

Então eu percebi, então removi meu comentário.
Brian Rasmussen

1
isso foi realmente útil. Eu precisei aplicar .Where (...) ao dict antes de retornar as chaves, mas esse método não retorna um dicionário, então não pude acessar a propriedade Keys. usando este select depois de onde funcionou bem
Martín Coll

22

Alternativamente:

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

4
Trabalhar com o .NET Compact Framework 2.0 (sem o Linq) foi a melhor opção para mim.
Michael Murphy

Se você não pode usar o LINQ, esta opção parece a melhor.
user2000950

17

Se você quiser usar o Linq, poderá usar o seguinte snippet:

var listNumber = dicNumber.Keys.ToList();

9

Se você deseja converter chaves:

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

senão, se você deseja converter valores:

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

Isso funcionará, mas pode não estar na ordem que você espera, até mesmo o dict foi ordenado por teclas antes, dict.Values ​​não é ...
BooNonMooN


3

Se você deseja passar a coleção de chaves do Dicionário para um argumento de método.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.