Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafios

#region Desafio Hora da Pratica 2
using Teste4_Alura.ConsumindoAPI;
//1-

List<int> listaNumeros = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
LinqListadeNumeros.ExibirListadeNumeros(listaNumeros);

//2-

List<LinqListadeLivros> ListaDeLivros = new List<LinqListadeLivros>();
ListaDeLivros.Add(new LinqListadeLivros("A hora da estrela", "Clarice Lispector", 1977));
ListaDeLivros.Add(new LinqListadeLivros("O proposito da familia", "Luciano Subirá", 2021));
ListaDeLivros.Add(new LinqListadeLivros("Como flechas", "Luciano Subirá", 2023));

LinqListadeLivros.FiltrarLivros(ListaDeLivros);

//3-

List<LinqPrecoProduto> listaDeProdutos = new List<LinqPrecoProduto>()
{
    new LinqPrecoProduto("Teclado", 700),
    new LinqPrecoProduto("Mouse", 99),
    new LinqPrecoProduto("Monitor", 2000),

};


LinqPrecoProduto.CalcularMedia(listaDeProdutos);

//4-

List<int> numerosPares = new List<int>()
{
    1,2,3,4,5,6,7,8,9,10,11,12

};

LinqNumerosPares.CalculandoNPares(numerosPares);

#endregion
using System.Linq;
namespace Teste4_Alura.ConsumindoAPI;

internal class LinqListadeNumeros
{

    public static void ExibirListadeNumeros(List<int> value)
    {
        
        List<int> numerosEscolhidos = value.Distinct().ToList();

        foreach (var listaNumero in numerosEscolhidos)
        {
            Console.WriteLine(listaNumero);
        }

        
    }
}
//------------------------------------
using System.Linq;
namespace Teste4_Alura.ConsumindoAPI;

internal class LinqListadeLivros
{
    public LinqListadeLivros(string titulo, string autor, int ano)
    {
        Titulo = titulo;
        Autor = autor;
        Ano = ano;
    }

    public string Titulo { get; set; }
    public string Autor { get; set; }
    public int Ano { get; set; }

    public static void FiltrarLivros(List<LinqListadeLivros> ListaDeLivros)
    {
        var titulosLivros = ListaDeLivros.Where(livro => livro.Ano > 2000).OrderBy(livro => livro.Titulo).Select(livro => livro.Titulo);

        Console.WriteLine($"Títulos de livros publicados após o ano 2000 ordenados alfabeticamente: ");
        foreach (var titulo in titulosLivros)
        {
            Console.WriteLine($"- {titulo}");
        }
    }





}
//------------------------------------------------
using Teste4_Alura.DesafioInterfacePagavel;

namespace Teste4_Alura.ConsumindoAPI;

internal class LinqPrecoProduto
{
    public  LinqPrecoProduto(string nome, int preco)
    {
        Nome = nome;
        Preco = preco;
        
    }

    public  string Nome { get; set; }
    public  int Preco { get; set; }

    public static void CalcularMedia(List<LinqPrecoProduto> listaDeProdutos)
    {
        var precoMedio = listaDeProdutos.Select(p => p.Preco).Average();

        Console.WriteLine($"Preço médio dos produtos: R$ {precoMedio}");

    }


}
//--------------------------------------

namespace Teste4_Alura.ConsumindoAPI;

internal class LinqNumerosPares
{
    public LinqNumerosPares(int numeros)
    {
        Numeros = numeros;
    }

    public int Numeros {  get; set; }

    public static void CalculandoNPares(List<int> listaNPars)
    {
        var nPar = listaNPars.Where(nP => nP % 2 == 0);

        foreach (var numeros in nPar)
        {
            Console.WriteLine($"-> {numeros}");
        }

    }
}
2 respostas
solução!

Olá, Ulysses! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso do LINQ para manipular coleções de forma prática, utilizou muito bem filtros e ordenações para organizar os dados e ainda compreendeu a importância de métodos estáticos para centralizar a lógica de cada desafio.

Uma sugestão para o futuro seria aplicar expressões mais encadeadas com LINQ, tornando o código ainda mais conciso. Por exemplo, no cálculo de números pares:

public static void CalculandoNPares(List<int> listaNPars)
{
    listaNPars
        .Where(n => n % 2 == 0)
        .ToList()
        .ForEach(n => Console.WriteLine($"-> {n}"));
}

Isso faz com que a filtragem e a exibição fiquem em uma única cadeia de operações, deixando o código mais enxuto e expressivo.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Opa professor pode deixar... E muita coisa, o tempo tambem vai elevar o XP... É dificil Deus do ceu... Mas vamos que vamos