Diferencias entre IEnumerable y IQueryable

En temas un poco más avanzado y manipulación de colección datos tenemos estas dos interfaces, a simple vista y uso pareciera que sirven igual, pero lo cierto es que hay diferencias

¿Cuándo usar cada uno?

  • IEnumerable es mejor cuando los datos ya están en memoria, como listas (List) o colecciones en C#.
  • IQueryable es ideal cuando trabajas con bases de datos y necesitas optimizar las consultas sin cargar datos innecesarios.
CaracterísticaIEnumerableIQueryable
Ubicación de ejecuciónLa consulta se ejecuta en la memoria del cliente.La consulta se ejecuta en la base de datos.
Tipo de evaluaciónEvaluación en memoria (LINQ to Objects).Evaluación diferida en la base de datos (LINQ to SQL, LINQ to Entities).
RendimientoMenos eficiente para grandes conjuntos de datos porque carga todo en memoria.Más eficiente porque solo carga los datos filtrados en la base de datos.
Manipulación de datosFiltra los datos en el cliente después de traerlos.Filtra los datos en el servidor antes de traerlos.

Tipos de datos que usan IEnumerable

Estos tipos de datos almacenan y manipulan colecciones en memoria:

  • List Implementa IEnumerable
  • Array (T[]) Implementa IEnumerable
  • Dictionary Implementa IEnumerable>
  • Queue Implementa IEnumerable
  • Stack Implementa IEnumerable

Tipos de datos que usan IQueryable

Estos tipos son utilizados en consultas de bases de datos:

  • DbSet en Entity Framework Implementa IQueryable
  • Table en LINQ to SQL Implementa IQueryable
Scroll al inicio