1
resposta

[Projeto] Resposta Desafio Proposto

Criei um metodo sobreposto usando parametro de INTEIRO e STRING, ficou assim:

    public static void FiltrarMusicasPorTonalidade(List<Musica> musicas, int tom)
    {
        var musicasPorTom = musicas.Where(mus => mus.chaveTom!.Equals(tom)).OrderBy(mus => mus.Nome).Select(mus => mus.Nome).ToList();
        Console.WriteLine($"Músicas gravadas com o tom {tom}:");
        foreach (var musica in musicasPorTom)
            Console.WriteLine($"-> {musica}");
    }

    public static void FiltrarMusicasPorTonalidade(List<Musica> musicas, string tom)
    {
        var musicasPorTom = musicas.Where(mus => mus.Tom!.Equals(tom)).OrderBy(mus => mus.Nome).Select(mus => mus.Nome).ToList();
        Console.WriteLine($"Músicas gravadas com o tom {tom}:");
        foreach (var musica in musicasPorTom)
            Console.WriteLine($"-> {musica}");
    }

Para exibir fiz a chamada desta forma:

Console.WriteLine("Buscando com INTEIRO");
LinqFilter.FiltrarMusicasPorTonalidade(musicas, 1);
Console.WriteLine("\nBuscando com STRING");
LinqFilter.FiltrarMusicasPorTonalidade(musicas, "C#");
1 resposta

Olá, Douglas! Tudo bem?

Pelo que vi, você fez um ótimo trabalho ao criar dois métodos sobrepostos para filtrar as músicas por tonalidade, tanto usando um inteiro quanto uma string como parâmetro. Isso é uma ótima prática, pois permite que o método seja flexível e aceite diferentes tipos de parâmetros.

No entanto, notei que você está usando o método Equals para comparar a tonalidade da música com o parâmetro passado. Isso pode causar um problema se a tonalidade da música e o parâmetro não forem exatamente iguais, incluindo a diferença entre maiúsculas e minúsculas.

Uma alternativa seria usar o método Equals com um segundo parâmetro, que é um StringComparison para ignorar a diferença entre maiúsculas e minúsculas. Veja como ficaria:

public static void FiltrarMusicasPorTonalidade(List<Musica> musicas, string tom)
{
    var musicasPorTom = musicas.Where(mus => mus.Tom!.Equals(tom, StringComparison.OrdinalIgnoreCase))
                               .OrderBy(mus => mus.Nome)
                               .Select(mus => mus.Nome)
                               .ToList();
    Console.WriteLine($"Músicas gravadas com o tom {tom}:");
    foreach (var musica in musicasPorTom)
        Console.WriteLine($"-> {musica}");
}

Isso fará com que a comparação entre a tonalidade da música e o parâmetro seja insensível a maiúsculas e minúsculas, permitindo que você encontre as músicas mesmo que a tonalidade seja escrita de forma diferente.

Espero ter ajudado e bons estudos!