Ir ao conteúdo

Posts recomendados

Postado

Olá, estou fazendo um trabalho em C# que preciso de ler dados do usuário, armazenar num dicionário e depois exibir esses dados um do lado do outro. Nesse caso seria código e nome de disciplina. Tenho um dicionario para o código e outro para o nome e preciso dar um Console.WriteLine onde mostre assim por exemplo:

001 - Matematica
002 - Portugues
003 - inglês


Estou tentando utilizar da seguinte maneira:

foreach (KeyValuePair<int, int> item in codid)
{                        
   Console.WriteLine("{0}", item.Value);
}


Para cada dicionario, porém sai dessa maneira:

001
002
003
Matematica
Portugues
inglês


E se eu tentar utilizar um foreach dentro de outro foreach, tecnicamente funciona, mas multiplica o texto:

001 - Matematica
002 - Portugues
003 - inglês

001 - Matematica
002 - Portugues
003 - inglês

001 - Matematica
002 - Portugues
003 - inglês

Queria saber como eu poderia fazer para exibir da primeira maneira.

  • Amei 1
Postado

@Meguma   se você quer escrever um ao lado do outro , então precisa colocar a outra variável no mesmo Console.Writeln();

foreach (KeyValuePair<int, int> item in codid)
{                        
   /// Console.WriteLine("{0}", item.Value);
   Console.WriteLine("chave: {0}, valor: {1}", item.Key, item.Value);
}

 

  • Curtir 1
Postado

@devair1010 No caso são dois dicionarios, um para o código da disciplica (codid) e um para o nome da disciplica (nomd). Eu queria saber se é possível utilizar um foreach com dois Value, ou seja, dois dicionarios. Se eu utilizar dois foreach separados

foreach (KeyValuePair<int, int> item in codid)
  {
     Console.WriteLine("{0}", item.Value);
  }
foreach (KeyValuePair<int, string> item1 in nomd)
  {
     Console.WriteLine("{0}", item1.Value);
  }

vai sair assim:

001
002
003
Matematica
Portugues
inglês

E se eu tentar usar um foreach dentro de outro foreach

foreach (KeyValuePair<int, int> item in codid)
  {
    foreach (KeyValuePair<int, string> item1 in nomd)
     {
         Console.WriteLine("{0} - {1}", item.Value, item1.Value);                       
      }     
  }

Tecnicamente dá certo, mas sai multiplicando por ser um para cada item de codid para cada item de nomd

001 - Matematica
001 - Portugues
001 - inglês
002 - Matematica
002 - Portugues
002 - inglês
003 - Matematica
003 - Portugues
003 - inglês

 

Eu preciso que saia igual o terceiro caso (foreach dentro de foreach) porém sem "multiplicar"

  • Obrigado 1
Postado

@Meguma   entendi  , sim  , mas o segundo dicionário tem outro nome e qtd's diferentes , e assim não vai funcionar , mas você pode colocar esses dois loop's foreach mesmos , porém o primeiro Console.WriteLine , você deleta esse "Line" , e no segundo loop deixa assim mesmos .

  • Curtir 1
Postado

@devair1010 No caso é, tem nome diferente mas quantidade igual de valores (faz parte do programa ambas terem mesma quantia)

tentei fazer da maneira que você me disse:

foreach (KeyValuePair<int, int> item in codid)
{
     Console.Write("{0}", item.Value);
}
foreach (KeyValuePair<int, string> item1 in nomd)
{
     Console.WriteLine("{0}", item1.Value);
}

Porém acabou saindo assim:

123Matematica
Portugues
inglês

 

EDIT - 

 

Acabei que vou deixar como dois foreach mesmo, tenho que entregar jajá o trabalho e já quebrei a cabeça hoje o dia todo com isso, quero descansar agora kkkk

  • Curtir 1
Postado

@Meguma    @Meguma    pode postar o código desses dicionários ?  mas creio que não tem jeito , ai seria melhor usar um dicionário  só com os dois dados juntos .  ou usar string para guardar esse dados e ai você usaria o loop for com o método elementAt .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!