os metodos LinqOrder.ExibirListaDeArtistasOrdenados(musicas);
e LinqFilter.FiltrarArtistasPorGeneroMusical(musicas, "Rock");
não estão funcionando quando tento testar, somente o metodo LinqFilter.FiltrarTodosOsGenerosMusicais(musicas);
funciona.
Eu deixei somente o metodo LinqOrder.ExibirListaDeArtistasOrdenados(musicas);
funcionando para testar por isso tem // no começo dos outros.
Program.cs:
using System.Text.Json;
using ScreenSound_04.Modelos;
using ScreenSound_04.Filtros;
using (HttpClient client = new HttpClient())
{
try
{
string resposta = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
var musicas =JsonSerializer.Deserialize<List<Musica>>(resposta)!;
//LinqFilter.FiltrarTodosOsGenerosMusicais(musicas);
LinqOrder.ExibirListaDeArtistasOrdenados(musicas);
//LinqFilter.FiltrarArtistasPorGeneroMusical(musicas, "Rock");
}
catch (Exception ex)
{
Console.WriteLine($"Temos um problema: {ex.Message}");
}
}
Musica.cs:
using System.Text.Json.Serialization;
namespace ScreenSound_04.Modelos;
internal class Musica
{
[JsonPropertyName("song")]
public string? Nome { get; set; }
public string? Artista { get; set; }
[JsonPropertyName("duration_ms")]
public int Duracao { get; set; }
[JsonPropertyName("genre")]
public string? Genero { get; set; }
public void ExibirDetalhesDaMusica()
{
Console.WriteLine($"Nome: {Nome}");
Console.WriteLine($"Artista: {Artista}");
Console.WriteLine($"Duração: {Duracao /1000}");
Console.WriteLine($"Gênero: {Genero}");
}
}
LinqFilter.cs:
using ScreenSound_04.Modelos;
namespace ScreenSound_04.Filtros;
internal class LinqFilter
{
public static void FiltrarTodosOsGenerosMusicais(List<Musica> musicas)
{
var TodosOsGenerosMusicais = musicas.Select(generos => generos.Genero).Distinct().ToList();
foreach (var genero in TodosOsGenerosMusicais)
{
Console.WriteLine($"- {genero}");
}
}
public static void FiltrarArtistasPorGeneroMusical(List<Musica> musicas, string genero)
{
var artistasPorGenero = musicas.Where(musicas => musicas.Genero!.Contains(genero)).Select(musica => musica.Artista).Distinct().ToList();
Console.WriteLine($"Exibindo os artistas por genero musical >>> {genero}");
foreach (var artista in artistasPorGenero)
{
Console.WriteLine($"- {artista}");
}
}
}
LinqOrder.cs:
using ScreenSound_04.Modelos;
namespace ScreenSound_04.Filtros;
internal class LinqOrder
{
public static void ExibirListaDeArtistasOrdenados(List<Musica> musicas)
{
var artistasOrdenados = musicas.OrderBy(musica => musica.Artista).Select(musica => musica.Artista).Distinct().ToList();
Console.WriteLine("Lista de artistas ordenados");
foreach (var artista in artistasOrdenados)
{
Console.WriteLine($"- {artista}");
}
}
}
Quando tento testar o metodo LinqOrder.ExibirListaDeArtistasOrdenados(musicas);
aparece isso no console:
e quando tento o metodo LinqFilter.FiltrarArtistasPorGeneroMusical(musicas, "Rock");
aparece isso;