IQueryable, IEnumerable e IList (dotnet)

Antônio Silva
2 min readMar 6, 2022

--

IQueryable, IEnumerable e IList

Estamos sujeitos a trabalhar com algum tipo de lista. Lista de usuário, lista de compras e etc.

Já pensou como podemos trabalhar da melhor maneira com essa infinidade de listas que estamos sujeitos?

Nesse tópico vamos conhecer as principais maneiras de se trabalhar com lista de dados e suas principais diferenças!

Collections são estruturas que possibilitam manipular grande quantidades de dados de maneira rápida e flexível.

IQueryable

Interface específica que contém um provedor de consulta (LINQ-To-SQL). Conseguimos criar um query filter de consulta na base de dados utilizando a linguagem LINQ e o retorno podemos transformar em um IEnumerable para maximizar a manipulação do resultado.

var query = dbUser.AsQueryble().Where(x => x.id == 1);

Nessa query a execução vai buscar exatamente o usuário de Id igual a 1 (um) na base de dados (Carregando na memória somente o necessário).

IEnumerable

Geralmente utilizado para processar elementos já carregados em memória.

Você pode fazer a consulta na base de dados utilizando um IEnumerable, mas essa busca retornará todos os elementos e seu filtro será feito em memória.

var query = dbUser.Where(x => x.Id == 1);

Nesse cenário o filtro é executado no Server, a consulta carrega a lista de usuário em memória e faz a filtragem dos dados (where).

IList

Coleção de dados não genéricos (precisa ser especificada o tipo de lista) que podem ser acessados através de um enumerador. IList é descendente de ICollection, base de todas as lista não genéricas.

Temos 3 categorias:

  • Leitura;
    A lista não pode ser modificada, imutável.
  • Tamanho Fixo;
    Lista de tamanho fixo, se na sua criação a lista for criada com 3 elementos, até o final do processo teremos 3 elementos. Permite a edição dos elementos já estabelecidos.
  • Tamanho variável;
    Permite adicionar, remover e modificar os item dessa lista. Geralmente utilizamos essa padrão de lista.

Referências

--

--

Antônio Silva

Sou Analista Desenvolvedor Especialista 👨‍💻; Sou um grande apaixonado na programação mobile e um grande sonhador com o futuro progressivo das PWA;