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 Where para filtrar números pares.
  • Use OrderBy para 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

  1. Criamos uma lista de inteiros desordenados.
  2. Where(n => n % 2 == 0) seleciona apenas os números divisíveis por 2 (pares).
  3. OrderBy(n => n) ordena a sequência resultante de forma crescente.
  4. ToList() força a execução imediata e armazena o resultado em uma lista.
  5. O foreach percorre 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 de Where: 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