C# · Intermediário · Inglês · Técnico
IQueryable
Interface de consulta que guarda a expressão LINQ como árvore, deixando um provedor, como o EF Core, traduzi-la (por exemplo para SQL) e executá-la só ao enumerar.
Onde usar
Aparece em repositórios que devolvem IQueryable<T> para o chamador compor filtros. Importa porque filtrar depois de um ToList ou sobre um IEnumerable traz tudo do banco antes de aplicar o Where.
Em código
IQueryable<Pedido> q = db.Pedidos;
q = q.Where(p => p.Total > 100);
q = q.OrderBy(p => p.Data);
var l = await q.ToListAsync(); // roda o SQLExemplos
Don't turn it into a list before filtering, keep it IQueryable.
Não transforme em lista antes de filtrar, mantenha como IQueryable.
The repository returns an IQueryable so callers can compose filters.
O repositório retorna um IQueryable para o chamador compor filtros.
Cuidado
Não confunda com IEnumerable: no IQueryable o lambda vira Expression e pode ser traduzido, e métodos C# sem tradução geram erro.