Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: hora da prática

Atividade 08.1

List <int> listaNumeros = new() {1,2,45,66,1,2,3,45};
Console.Clear();

var listaNumerosUnicos = listaNumeros.OrderBy(n => n).Distinct().ToList();
listaNumerosUnicos.ForEach(n => Console.WriteLine($"- {n}"));

Atividade 08.2

Program.cs

using Livraria.Modelos;
using System.Text.Json;

Console.Clear();
using (HttpClient client = new()) {
    try {
        var response = await client.GetStringAsync("https://raw.githubusercontent.com/ArthurOcFernandes/Exerc-cios-C-/curso-4-aula-2/Jsons/Livros.json");
        var listaLivros = JsonSerializer.Deserialize<List<Livro>>(response);

        Livro livro = new("Livro Testes", "James", 2003);
        listaLivros!.Add(livro);

        var listaLivrosAposAnos2000 = listaLivros.Where(l => l.AnoPublicacao >= 2000).Distinct().ToList();
        listaLivrosAposAnos2000.ForEach(l => Console.WriteLine($"- {l.Titulo} - {l.Autor} - {l.AnoPublicacao}"));
    }
    catch (Exception ex) {
        Console.WriteLine($"Um erro foi encontrado ao realizar a requisição: {ex.Message}");
    }
}

Livro.cs

using System.Text.Json.Serialization;

namespace Livraria.Modelos;
class Livro {

    [JsonPropertyName("titulo")]
    public string? Titulo {get;set;}

    [JsonPropertyName("autor")]
    public string? Autor {get;set;}

    [JsonPropertyName("ano_publicacao")]
    public int AnoPublicacao {get;set;}

    public Livro(string? titulo, string? autor, int anoPublicacao) {
        Titulo = titulo;
        Autor = autor;
        AnoPublicacao = anoPublicacao;
    }

}

Atividade 08.3

Produto.cs

namespace Mercado.Modelos;
class Produto {

    public string? Nome {get;}
    public double Preco {get;}

    public Produto(string? nome, double preco) {
        Nome = nome;
        Preco = preco;
    }
    
}

Program.cs

using Mercado.Modelos;
Console.Clear();

Produto produto1 = new("Camisa", 120);
Produto produto2 = new("Casaco", 330);
Produto produto3 = new("Tênis", 250);

List<Produto> listaProdutos = new(){produto1, produto2, produto3};
var mediaProdutos = listaProdutos.Average(p => p.Preco);
listaProdutos.ForEach(p => Console.WriteLine($"{p.Nome} R${p.Preco.ToString("F2")}"));
Console.WriteLine($"A média de preço dos produtos é de: R${mediaProdutos.ToString("F2")}");

Atividade 08.4

Console.Clear();

List<int> listaInteiros = new() {0,1,2,3,4,5,6,7,8,9};

var paresListaInteiros = listaInteiros.Where(n => n % 2 == 0).ToList();

Console.WriteLine("Os pares são: ");
paresListaInteiros.ForEach(n => Console.WriteLine($"- {n}"));
1 resposta
solução!

Oi, Diego! Como vai?

Sua resolução das atividades está correta, você aplicou bem os conceitos de LINQ, como OrderBy, Distinct, Where e Average. Importante como você organizou o código e utilizou boas práticas, como o uso de HttpClient com using e tratamento de exceção. Na atividade dos livros, a filtragem por ano ficou clara e funcional, e na de produtos você demonstrou domínio ao calcular a média.

Siga praticando dessa forma, explorando diferentes combinações de métodos do LINQ para fortalecer ainda mais seu raciocínio.

Dica: quando usar Distinct() com objetos (como Livro), implemente comparação personalizada (como IEquatable ou sobrescrevendo Equals e GetHashCode) para garantir que a remoção de duplicados funcione corretamente. Isso ajuda a evitar resultados inesperados.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!