Como eu poderia fazer para exibir a lista de músicas de determinado artista sem repetição?
using ScreenSound_04.Modelos;
using System.Linq;
namespace ScreenSound_04.Filtros;
internal class LinqFilter
{
public static void FiltrarMusicaDeUmArtista(List<Musica> musicas, string nomeDoArtista)
{
var musicasDoArtistas = musicas.Where(musica => musica.Artista!.Equals(nomeDoArtista)).ToList();
Console.WriteLine(nomeDoArtista);
foreach(var musica in musicasDoArtistas)
{
Console.WriteLine($"- {musica.Nome}");
}
}
Classe Musica
using System.Text.Json.Serialization;
namespace ScreenSound_04.Modelos;
internal class Musica
{
[JsonPropertyName("song")]
public string? Nome { get; set; }
[JsonPropertyName("artist")]
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 da música: {Nome}");
Console.WriteLine($"Artista: {Artista}");
Console.WriteLine($"Duração da música em segundos: {Duracao / 1000}");
Console.WriteLine($"Gênero musical: {Genero}");
}
}
Classe Program
using ScreenSound_04.Modelos;
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.FiltrarMusicaDeUmArtista(musicas, "Post Malone");
}
catch (Exception ex)
{
Console.WriteLine($"Temos um problema: {ex.Message}");
}
}
Saída
Post Malone
- Better Now
- Better Now
- Circles
- Congratulations
- Goodbyes (Feat. Young Thug)
- Psycho (feat. Ty Dolla $ign)
- Sunflower - Spider-Man: Into the Spider-Verse
- Wow.
- rockstar (feat. 21 Savage)
- Circles