Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dictionary e for

Eu estou usando o método for ao invés do foreach porque eu gostaria de manter o índice, mas não sei como fazer a alteração da forma correta usando o dicitionary. antes estava:

for (int i = 0; i < bandas.Count; i++) { Console.WriteLine($"{i+1} - {bandas[i]}"); }

E eu alterei para:

for (int i = 0; i < bandasRegistradas.Keys.Count; i++) { Console.WriteLine($"{i+1} - {bandasRegistradas.Keys[i]}"); }

E o programa da erro dizendo que não é possível aplicar a indexação [ ] a uma expressão do tipo "Dictionary<string, List>.KeyCollection".

De que forma posso conseguir obter o mesmo resultado de antes?

2 respostas
solução!

O erro ocorre porque bandasRegistradas.Keys retorna um objeto do tipo Dictionary<string, List>.KeyCollection, que não permite a indexação direta usando [i] como você está tentando fazer.

Para obter o mesmo resultado que antes, você pode converter bandasRegistradas.Keys em uma lista antes de usar a indexação. Aqui está como você pode fazer isso:

List<string> keysList = new List<string>(bandasRegistradas.Keys);
for (int i = 0; i < keysList.Count; i++)
{
    Console.WriteLine($"{i+1} - {keysList[i]}");
}

No código acima, List keysList = new List(bandasRegistradas.Keys); cria uma nova lista contendo as chaves do dicionário bandasRegistradas. Em seguida, você pode iterar sobre essa lista usando o for e imprimir os elementos da mesma forma que antes.

Dessa forma, você terá acesso ao índice e às chaves do dicionário bandasRegistradas enquanto mantém a funcionalidade que deseja.