1
resposta

Utilizei a base de dados do desafio anterior

Program.cs

using (HttpClient client = new HttpClient())
    try
    {
        string resposta = await client.GetStringAsync("https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Livros.json");
        var livro = JsonSerializer.Deserialize<List<Livros>>(resposta)!;
        //livro[0].ExibirDetalhes();
        LinqFilter.FiltroDeLancamento(livro);
    } catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

LinqFilter.cs

internal class LinqFilter
{
    public static void FiltroDeLancamento(List<Livros> livros)
    {
        var lancamentoDoLivro = livros.Where(l => l.Ano > 1950).Select(l => l.Nome).ToList();
        foreach(var livro in lancamentoDoLivro)
        {
            Console.WriteLine($"{livro}");
            
        }
    }
}
1 resposta

Olá, Samuel. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você estruturou o uso do HttpClient para obter dados da API e fez a desserialização do JSON de forma correta. O uso do LINQ no filtro para os livros com lançamento após 1950 também está muito bom, facilita a leitura do código.

Uma dica interessante seria o uso do método OrderBy do LINQ para ordenar os livros por ano, caso queira exibi-los em ordem crescente de lançamento. Veja como ficaria o código:


var lancamentoDoLivro = livros.Where(l => l.Ano > 1950)
                              .OrderBy(l => l.Ano)
                              .Select(l => l.Nome)
                              .ToList();

Esse código ordena os livros pelo ano de lançamento antes de exibir os nomes. Caso queira alterar a ordem, basta usar OrderByDescending.

Conte com o apoio do Fórum. Abraços e bons estudos.