📊 Capítulo 06: LINQ & Expressões Lambda
Especialização em Sistemas com C#
🗺️ Execução Tardia (Deferred Execution) no Pipeline LINQ
flowchart LR
SRC["Origem: pedidos.AsQueryable() / IEnumerable"]
--> W["Where(p => p.Ativo)"]
--> O["OrderByDescending(p => p.Data)"]
--> S["Select(p => p.Total)"]
--> EXEC["Operador Terminal: .ToList() / .First() / foreach\n(APENAS AQUI a consulta ao banco ou iteração na memória é executada!) ⚡"]
NOTE["A consulta é construída como uma Árvore de Expressão (Expression Tree)\ne não gasta processamento até ser materializada!"]
EXEC -.-> NOTE
style SRC fill:#ede7f6,stroke:#512da8,stroke-width:2px
style W fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style O fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style S fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
style EXEC fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style NOTE fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
🎯 Slide 1: Fluent Syntax vs Query Syntax
// Fluent Syntax (Preferida pela indústria):
var topClientes = clientes
.Where(c => c.Faturamento > 10_000m)
.OrderBy(c => c.Nome)
.Select(c => new { c.Id, c.Nome })
.Take(5)
.ToList();
🎯 Slide 2: O Perigo da Múltipla Enumeração (Multiple Enumeration)
-
Chamar
.Count()e depois.FirstOrDefault()em umIEnumerablepuro executa a busca e os filtros duas vezes! - Materialize a consulta com
.ToList()ou.ToArray()antes de reutilizá-la!
🎯 Slide 3: Agrupamentos com GroupBy
var vendasPorCategoria = produtos
.GroupBy(p => p.Categoria)
.Select(g => new { Categoria = g.Key, Total = g.Sum(p => p.Preco) });
🔗 Navegação do Capítulo 06
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim