Fácil C#
Filtrar e ordenar números
Enunciado
Dada uma lista de números inteiros, use LINQ para obter apenas os números pares, ordenados de forma crescente, e exiba cada um em uma linha.
Requisitos
- Use
Wherepara filtrar números pares. - Use
OrderBypara ordenar crescentemente. - Exiba cada número em uma linha separada.
Código inicial
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
var numeros = new List<int> { 5, 2, 8, 1, 9, 4, 7, 6, 3 };
// Seu código LINQ aqui
}
}
Saída esperada
2
4
6
8
Ver dica
Use numeros.Where(n => n % 2 == 0).OrderBy(n => n) e depois um foreach para imprimir.
Mostrar solução
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
var numeros = new List<int> { 5, 2, 8, 1, 9, 4, 7, 6, 3 };
// Filtra pares, ordena e materializa em lista
var paresOrdenados = numeros
.Where(n => n % 2 == 0)
.OrderBy(n => n)
.ToList();
foreach (var n in paresOrdenados)
Console.WriteLine(n);
}
}
Passo a passo
- Criamos uma lista de inteiros desordenados.
Where(n => n % 2 == 0)seleciona apenas os números divisíveis por 2 (pares).OrderBy(n => n)ordena a sequência resultante de forma crescente.ToList()força a execução imediata e armazena o resultado em uma lista.- O
foreachpercorre a lista e imprime cada número em uma linha.
Por que funciona
LINQ permite encadear operadores de forma declarativa. Where e OrderBy são operadores de streaming que, juntos, produzem uma nova sequência. A execução só ocorre quando ToList() é chamado, garantindo que a ordenação seja aplicada sobre os elementos filtrados.
Erros comuns
- Esquecer o
using System.Linq;: o código não compila porque os métodos de extensão não são encontrados. - Usar
OrderBy(n => n % 2)em vez deWhere: isso ordenaria por paridade, mas não filtraria. - Não materializar com
ToList()e tentar modificar a lista original durante a iteração: pode causar exceção.
Outra forma de resolver
Usar sintaxe de consulta:
var paresOrdenados = (from n in numeros
where n % 2 == 0
orderby n
select n).ToList();
É preferível quando a consulta tem muitas cláusulas e fica mais legível.
Saída esperada
2
4
6
8