1
resposta

[Projeto] Desafio: hora da prática

1 - Dada uma lista de números, criar uma consulta LINQ para retornar apenas os elementos únicos da lista.

List<int> litaDeNumeros = new List<int>()
{
    12, 23, 15, 8, 5, 11, 21, 89, 101, 23, 87, 74, 12, 7, 4, 15, 8, 11
};

var pesquisaNumeros = litaDeNumeros.Distinct().ToList();

Console.WriteLine("Lista de números únicos:\n");
foreach(var pesquisa in pesquisaNumeros)
{
    Console.WriteLine($"- {pesquisa}");
}

2 - Dada uma lista de livros com título, autor e ano de publicação, criar uma consulta LINQ para retornar uma lista com os títulos dos livros publicados após o ano 2000, ordenados alfabeticamente.

namespace _03_Exercicio_02
{
    internal class Livro
    {
        public string Titulo { get; set; }
        public string Autor { get; set; }
        public int AnoPublicacao { get; set; }

    }
}

using _03_Exercicio_02;

List<Livro> listaDeLivros = new List<Livro>()
{
    new Livro { Titulo = "Orgulho e Preconceito", Autor = "Jane Austen", AnoPublicacao = 1813 },
    new Livro { Titulo = "1984", Autor = "George Orwell", AnoPublicacao = 1949 },
    new Livro { Titulo = "O Pequeno Príncipe", Autor = "Antoine de Saint-Exupéry", AnoPublicacao = 1943 },
    new Livro { Titulo = "O Hobbit", Autor = "J.R.R. Tolkien", AnoPublicacao = 1937 },
    new Livro { Titulo = "Harry Potter e o Prisioneiro de Azkaban", Autor = "J.K. Rowling", AnoPublicacao = 1999 },
    new Livro { Titulo = "A Menina que Roubava Livros", Autor = "Markus Zusak", AnoPublicacao = 2005 },
    new Livro { Titulo = "O Caçador de Pipas", Autor = "Khaled Hosseini", AnoPublicacao = 2003 },
    new Livro { Titulo = "As Crônicas de Nárnia: O Leão, a Feiticeira e o Guarda-Roupa", Autor = "C.S. Lewis", AnoPublicacao = 1950 },
    new Livro { Titulo = "Jogos Vorazes", Autor = "Suzanne Collins", AnoPublicacao = 2008 },
    new Livro { Titulo = "O Nome do Vento", Autor = "Patrick Rothfuss", AnoPublicacao = 2007 },
    new Livro { Titulo = "Dom Quixote", Autor = "Miguel de Cervantes", AnoPublicacao = 1605 },
    new Livro { Titulo = "Cidades de Papel", Autor = "John Green", AnoPublicacao = 2008 },
    new Livro { Titulo = "Admirável Mundo Novo", Autor = "Aldous Huxley", AnoPublicacao = 1932 },
    new Livro { Titulo = "Garota Exemplar", Autor = "Gillian Flynn", AnoPublicacao = 2012 },
    new Livro { Titulo = "A Guerra dos Tronos", Autor = "George R.R. Martin", AnoPublicacao = 1996 }
};

var pesquisa = listaDeLivros.Where(l => l.AnoPublicacao > 2000).OrderBy(l => l.Titulo).Select(l => l.Titulo);

Console.WriteLine("Lista de livros publicados após o ano 2000:");
foreach(var livro in pesquisa)
{
    Console.WriteLine($"{livro}");
}

03 - Dada uma lista de produtos com nome e preço, criar uma consulta LINQ para calcular o preço médio dos produtos.

namespace _03_Exercicio_03
{
    internal class Produto
    {
        public string Nome { get; set; }
        public decimal Preco { get; set; }
    }
}

using System.Globalization;
using _03_Exercicio_03;

List<Produto> listaDeProdutos = new List<Produto>()
{
    new Produto { Nome = "Camiseta", Preco = 29.90m },
    new Produto { Nome = "Calça Jeans", Preco = 89.50m },
    new Produto { Nome = "Tênis", Preco = 120.00m },
    new Produto { Nome = "Meias (par)", Preco = 12.75m },
    new Produto { Nome = "Boné", Preco = 35.00m },
    new Produto { Nome = "Jaqueta", Preco = 150.00m },
    new Produto { Nome = "Livro", Preco = 45.00m },
    new Produto { Nome = "Caneca", Preco = 15.50m },
    new Produto { Nome = "Mochila", Preco = 75.00m },
    new Produto { Nome = "Cinto", Preco = 40.00m }
};

var precoMedio = listaDeProdutos.Select(p => p.Preco).Average();

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

4 - Dada uma lista de inteiros, criar uma consulta LINQ para retornar apenas os números pares.

List<int> listaDeNumeros = new List<int>()
{
    2, 7, 14, 3, 22, 9, 18, 5, 28, 11,
    32, 15, 40, 19, 48, 23, 56, 27, 64, 31,
    72, 35, 80, 39, 88, 43, 96, 47, 104, 51,
    112, 55, 120, 59, 128, 63, 136, 67, 144, 71,
    152, 75, 160, 79, 168, 83, 176, 87, 184, 91,
    192, 95, 200, 99, 6, 13, 20, 29, 34, 37,
    42, 45, 50, 53, 58, 61, 66, 69, 74, 77,
    82, 85, 90, 93, 98, 101, 106, 109, 114, 117
};

var numerosPares = listaDeNumeros.Where(n => n % 2 == 0);

Console.WriteLine("Lista de números pares:\n");
foreach(var numeros in numerosPares)
{
    Console.WriteLine($"- {numeros}");
}
1 resposta

Oi, Bruno! Como vai?

Seu exercício está muito bem estruturado. As consultas LINQ que você aplicou resolvem com clareza cada desafio, especialmente a filtragem com Where() combinada com OrderBy() e Select() para os livros. A leitura está fluida e organizada, o que mostra domínio da sintaxe.

Uma dica interessante para o futuro é o uso do método GroupBy() para agrupar elementos de uma lista por uma chave. Veja este exemplo:


List nomes = new List { "Ana", "Bruno", "Ana", "Carlos", "Bruno" };

var agrupados = nomes.GroupBy(n => n);

foreach (var grupo in agrupados)
{
    Console.WriteLine($"Nome: {grupo.Key}, Quantidade: {grupo.Count()}");
}

Esse código agrupa nomes iguais e conta quantas vezes cada um aparece. É útil em relatórios ou análises de dados.

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