![]() |
Neste artigo, vamos explorar em profundidade como utilizar consultas LINQ para aplicar filtros em coleções de dados dentro de aplicações .NET. LINQ, sigla para Language Integrated Query (Consulta Integrada à Linguagem), é um conjunto poderoso de recursos que permite consultar, transformar e manipular dados de forma declarativa diretamente no código, usando C# ou Visual Basic.
Com LINQ, você consegue escrever consultas expressivas e legíveis, reduzindo a complexidade e evitando loops manuais extensos. Isso torna o código mais limpo, fácil de manter e menos propenso a erros.
Ao longo deste guia, você aprenderá:
-
O que é LINQ e como funciona
-
Estrutura de uma consulta LINQ
-
Diferença entre sintaxe de consulta e sintaxe de método
-
Como filtrar, projetar e ordenar dados
-
Boas práticas e exemplos práticos
O que é LINQ?
LINQ é uma tecnologia que integra recursos de consulta diretamente na linguagem, permitindo trabalhar com diferentes fontes de dados como:
-
Arrays
-
Listas
-
Dicionários
-
Coleções em memória
-
Bancos de dados
-
XML
-
APIs
Ele funciona sobre qualquer tipo que implemente a interface IEnumerable ou IQueryable.
A grande vantagem é que você escreve consultas com uma sintaxe consistente, independente da fonte de dados.
Estrutura de uma consulta LINQ
Uma consulta LINQ normalmente possui três partes principais:
1️⃣ Fonte de dados
É a coleção onde os dados serão consultados.
2️⃣ Critérios de filtragem
Condições que definem quais elementos serão selecionados.
3️⃣ Projeção dos resultados
Define como os dados serão retornados ou transformados.
Exemplo prático com classe Produto
Vamos considerar uma classe que representa produtos de uma loja online:
Suponha que temos uma lista:
Filtrando usando sintaxe de consulta
Queremos selecionar livros que custam menos de 50 reais:
O que acontece aqui:
-
fromdefine a fonte -
whereaplica o filtro -
selectdefine o retorno
Essa sintaxe lembra SQL, sendo ótima para leitura.
Iterando os resultados
A consulta retorna IEnumerable<Produto>, permitindo iteração ou conversão para lista.
Sintaxe de método (Method Syntax)
A mesma consulta pode ser escrita assim:
Aqui usamos métodos de extensão da classe Enumerable.
Componentes:
-
Where→ filtro -
Select→ projeção
Essa abordagem é muito usada no dia a dia por ser mais flexível.
Ordenando resultados
Podemos ordenar por preço:
Outros métodos úteis:
-
OrderByDescending -
ThenBy -
ThenByDescending
Métodos LINQ importantes
Alguns métodos muito usados:
| Método | Função |
|---|---|
| First | Primeiro elemento |
| FirstOrDefault | Primeiro ou nulo |
| Single | Elemento único |
| Count | Contagem |
| Sum | Soma |
| Average | Média |
| Min / Max | Valores extremos |
| GroupBy | Agrupamento |
| Distinct | Remove duplicados |
| Join | Combinação de coleções |
Execução adiada (Deferred Execution)
Uma característica importante do LINQ é a execução adiada.
A consulta só é executada quando você:
-
Itera com
foreach -
Usa
ToList() -
Usa
ToArray() -
Chama métodos agregadores
Exemplo:
Isso melhora performance e flexibilidade.
Boas práticas com LINQ
✅ Prefira consultas legíveis
✅ Evite consultas muito complexas em uma linha
✅ Use ToList() quando precisar materializar dados
✅ Evite múltiplas iterações desnecessárias
✅ Use nomes claros nas lambdas
Quando usar LINQ?
LINQ é ideal para:
-
Filtragem de dados
-
Transformações
-
Relatórios
-
Manipulação de coleções
-
Consultas em memória
-
APIs e backend
Conclusão
Neste artigo, aprendemos como aplicar filtros usando consultas LINQ e entendemos suas principais estruturas e abordagens. Exploramos tanto a sintaxe de consulta quanto a sintaxe de método, além de exemplos práticos com filtragem e ordenação.
LINQ é uma ferramenta essencial para qualquer desenvolvedor .NET, pois permite escrever código mais declarativo, expressivo e eficiente. Dominar LINQ significa aumentar sua produtividade e melhorar significativamente a qualidade do código.
Continue praticando e explorando métodos avançados — quanto mais você usa LINQ, mais natural ele se torna.