Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Qual a Diferença?

Estou com uma duvida referente a esse trecho de codigo

string nomeDaBanda = Console.ReadLine()!;

if (listaBanda.ContainsKey(nomeDaBanda))
{
   // List<int> notasDaBanda = listaBanda[nomeDaBanda];
   double notasDaBanda = listaBanda[nomeDaBanda].Average();
    Console.WriteLine($"A media da {nomeDaBanda} e de {notasDaBanda}");

} else
{
    Console.WriteLine("Nao possui essa banda na lista.Deseja adcionar!");
}

Minha Duvida seria nesse trecho mais especifico

 // List<int> notasDaBanda = listaBanda[nomeDaBanda];
   double notasDaBanda = listaBanda[nomeDaBanda].Average();

No caso na Lista comentada e estaria chamando toda a lista? e no tipo Double eu estaria chamando em especifico o nome da banda?

qual dos dois seria mais eficaz ou melhor?

1 resposta
solução!

Não entendi muito bem a sua dúvida, mas vou tentar resolver. Parece que o exercício no trecho quer que o console mostre o nome da banda e a média das notas dela em uma string.

 // List<int> notasDaBanda = listaBanda[nomeDaBanda];

Não sei o tipo da listaBanda, mas me parece um Dictionary, o Values da listaBanda seriam Lists. Uma List deve conter várias notas da banda, e basta fazer uma média dessas notas.

Acho que a confusão está no nome que você deu à variável desse trecho:

double notasDaBanda = listaBanda[nomeDaBanda].Average();

O método Average faz a média entre todos os fatores de um Enumerable. Logo, essa variável representa a média dessas notas, podemos renomear a variável como:

double médiaDaBanda = listaBanda[nomeDaBanda].Average();

Esse trecho, porém, torna a criação da List notasDaBanda obsoleta, já que ela não foi usada no cálculo da média.

Você pode reescrever o código de maneira mais eficiente, com a criação de uma única variável:

 if (listaBanda.ContainsKey(nomeDaBanda))
{

    double médiaDaBanda = listaBanda[nomeDaBanda].Average();
    Console.WriteLine($"A media da {nomeDaBanda} é de {médiaDaBanda}");

}

Ou usar duas variáveis, como no trecho comentado no código original:

if (listaBanda.ContainsKey(nomeDaBanda))
{

    List<int> notasDaBanda = listaBanda[nomeDaBanda];
    double médiaDaBanda = notasDaBanda.Average();
    Console.WriteLine($"A media da {nomeDaBanda} e de {médiaDaBanda}");

}