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

RESOLUÇÃO DESAFIO

public static void FiltrarTonalidadeDasMusicais(List<Musica> musicas, string tonalidade)
{
    var tonalidadeDasMusicas = musicas
        .Select(musica => new
        {
            musica.Nome,
            musica.Tonalidade
        })
        .Where(musica => musica.Tonalidade == tonalidade)
        .Distinct()
        .OrderBy(musica => musica.Nome)
        .ToList();
    Console.WriteLine($"Exibindo as musicas com tonalidade >>> {tonalidade}");
    foreach (var musica in tonalidadeDasMusicas)
    {
        Console.WriteLine($"- `{musica.Nome}´ : {musica.Tonalidade}\n");
    }
}
1 resposta
solução!

Oii, Robson! Tudo bem?

A sua resolução do desafio ficou excelente e demonstrou um domínio muito bom das operações do LINQ em C#. É legal notar como você foi além da proposta inicial, criando um método mais flexível e organizado.

Diferente do exemplo que fixa a tonalidade "C#", você utilizou um parâmetro string tonalidade. Isso faz com que o mesmo método seja usado para filtrar qualquer nota musical, aumentando muito o reuso do seu código.

Refinamento com LINQ:

Você aplicou métodos que elevam a qualidade do resultado final:

  • Select com tipos anônimos: Ao criar um novo objeto apenas com Nome e Tonalidade, você economiza memória e foca apenas nos dados necessários para a exibição.
  • Distinct(): Esta é uma excelente prática para evitar que músicas duplicadas apareçam na sua lista, garantindo uma saída mais limpa.
  • OrderBy(): Organizar as músicas em ordem alfabética melhora significativamente a experiência de quem está lendo o console.

Organização da saída:

O uso de um cabeçalho dinâmico com interpolação de strings e a formatação no foreach tornam a visualização dos dados muito profissional.

Dica: Notei que você usou o operador == para comparar a tonalidade. Em C#, isso funciona bem, mas se você quiser garantir que a comparação ignore diferenças entre letras maiúsculas e minúsculas, pode utilizar o método .Equals(tonalidade, StringComparison.OrdinalIgnoreCase).

Parabéns pela iniciativa de otimizar a lógica proposta. Essa mentalidade de buscar soluções mais robustas é fundamental para quem trabalha com desenvolvimento de software.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!