Pular para o conteúdo
.NETQuery syntax vs method syntax
Módulo 01Fundamentos da Plataforma e da Linguagem

Query syntax vs method syntax

intermediario 28 min de leitura·Atualizado · .NET 9
Resumo

LINQ consulta coleções de forma declarativa. Há duas sintaxes equivalentes: a query syntax (parecida com SQL) e a method syntax (encadeamento de métodos). Ambas compilam para o mesmo código.

1. Objetivos de Aprendizagem#

  • Escrever consultas nas duas sintaxes.
  • Reconhecer que são equivalentes.
  • Escolher a mais legível para cada caso.

2. Pré-requisitos#

  • Interfaces de coleção (tópico 7.3).

3. Conceito#

LINQ (Language Integrated Query) traz consultas para dentro do C#. As duas sintaxes:

  • Query syntax: from x in fonte where ... select ... — legível para joins e agrupamentos.
  • Method syntax: fonte.Where(...).Select(...) — usa métodos de extensão e expressões lambda; cobre 100% dos operadores.

O porquê de existirem duas: conveniência. O compilador traduz query syntax em method syntax. A method syntax é a mais comum no dia a dia.

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new console -n Catalog.Linq
cd Catalog.Linq

4.2. Implementação Passo a Passo#

  1. Dados de exemplo:
C#
record Produto(string Nome, decimal Preco, string Categoria);

var produtos = new List<Produto>
{
    new("Mouse", 90m, "Periféricos"),
    new("Teclado", 120m, "Periféricos"),
    new("Monitor", 1200m, "Telas"),
};
  1. Query syntax:
C#
var baratos = from p in produtos
              where p.Preco < 200
              orderby p.Preco
              select p.Nome;
  1. Method syntax (equivalente):
C#
var baratos2 = produtos
    .Where(p => p.Preco < 200)
    .OrderBy(p => p.Preco)
    .Select(p => p.Nome);

foreach (var nome in baratos2)
    Console.WriteLine(nome);   // Mouse, Teclado

4.3. Executando#

Shell
dotnet run

5. Exemplo Completo#

As duas consultas acima produzem exatamente o mesmo resultado (Mouse, Teclado). Escolha a sintaxe que ficar mais clara para quem for ler.

6. Boas Práticas e Armadilhas#

FaçaEvite
Usar method syntax para pipelines simplesMisturar as duas sintaxes na mesma consulta sem motivo
Query syntax para joins/agrupamentos complexosConsultas gigantes e ilegíveis — quebre em etapas
Nota

LINQ funciona sobre IEnumerable<T> (memória) e sobre IQueryable<T> (provedores como o EF Core, que traduzem a consulta para SQL). A sintaxe é a mesma; o destino muda.

7. Segurança e Produção#

  • Com EF Core, a consulta LINQ vira SQL. Escrever consultas claras evita gerar SQL ineficiente sem perceber (veremos em execução adiada).

8. Exercícios#

  • Fácil: liste os nomes dos produtos da categoria "Periféricos".
  • Médio: escreva a mesma consulta nas duas sintaxes.
  • Desafio: ordene por preço decrescente e pegue os 2 primeiros nomes.

9. Resumo#

LINQ consulta coleções de forma declarativa; query syntax e method syntax são equivalentes. Method syntax domina o dia a dia; query syntax brilha em consultas complexas.

10. Próximos Passos#

A seguir, os operadores LINQ essenciais.

11. Referências#

08-01 — Query syntax vs method syntax | Curso ASP.NET Core