ExpertiDict

C# · Intermediário · Inglês · Técnico

IQueryable

/ˌaɪ ˈkwɪɹiəbəl/substantivo

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 SQL

Exemplos

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.

Veja também

Todos os termos de C#