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#");