1
resposta

RESOLUÇÃO DESAFIO 2

Sei que o desafio era filtrar músicas que tem apenas a tonalidade C#. porém, fiz um pouco diferente. Pode selecionar a tonalidade no Program.cs e listar as músicas pela tonalidade que quiser.

    public static void FiltrarMusicaPorTonalidade(List<Musica> musicas, string tonalidade)
    {
        var musicasDaTonalidade = musicas.Where(musica => musica.Tonalidade == tonalidade)
            .OrderBy(musicas => musicas.Nome).Select(musicas => musicas.Nome).Distinct().ToList();

        Console.WriteLine($"Musicas de tonalidade {tonalidade}");
        foreach(var musica in musicasDaTonalidade)
        {
            Console.WriteLine($"- {musica}");
        }
    }
}
    try
    {
        string resposta = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
        var musicas = JsonSerializer.Deserialize<List<Musica>>(resposta)!;

        LinqFilter.FiltrarMusicaPorTonalidade(musicas, "C#");

    }
    catch (Exception ex)
    {
        Console.WriteLine($"Temos um problema: {ex.Message}");
    }
}
1 resposta

Olá João!

Que legal que você decidiu ir além do desafio proposto e criou uma funcionalidade mais flexível para filtrar músicas por qualquer tonalidade! Isso é uma ótima maneira de praticar e consolidar o que você aprendeu.

Seu código parece estar bem estruturado para permitir essa flexibilidade. Ao invés de filtrar apenas por "C#", você permite que a tonalidade seja passada como um parâmetro, o que é uma abordagem muito prática e reutilizável.

Aqui está um exemplo de como você pode usar essa função no Program.cs para filtrar por qualquer tonalidade que desejar:

LinqFilter.FiltrarMusicaPorTonalidade(musicas, "G#");

Isso listará todas as músicas na tonalidade "G#". Você pode substituir "G#" por qualquer outra tonalidade que deseja filtrar.

Além disso, sua implementação usando Distinct() é uma boa prática para garantir que não haja duplicatas na lista final de nomes de músicas.

Espero ter ajudado e bons estudos!