domingo, 9 de agosto de 2015

IEnumerable VS IQueryable

IEnumerable

  1. IEnumerable existe en System.Collections Espacio de nombres.
  2. IEnumerable puede avanzar sólo sobre una colección, no puede moverse hacia atrás y entre los elementos.
  3. IEnumerable es mejor para consultar datos en memoria de colecciones como Lista, Array etc.
  4. Si bien los datos de consulta de base de datos, IEnumerable ejecuta consulta de selección del lado del servidor, los datos están en memoria en el lado del cliente.
  5. IEnumerable es adecuado para LINQ a objetos y LINQ para consultas XML.
  6. IEnumerable soporta ejecución diferida.
  7. IEnumerable no soporta consulta personalizada.
  8. IEnumerable no soporta carga diferida (Lazy Loading). Por lo tanto no es adecuado para la paginación.
IQueryable

  1. IQueryable existe en System.Linq Espacio de nombres.
  2. IQueryable puede avanzar sólo sobre una colección, no puede moverse hacia atrás y entre los elementos.
  3. IQueryable es mejor para consultar datos que no estén en memoria (como base de datos remota, servicio) colecciones.
  4. Si bien los datos de consulta de base de datos, IQueryable ejecuta consulta de selección en el lado del servidor con todos los filtros.
  5. IQueryable es adecuado para LINQ to consultas SQL.
  6. IQueryable soporta ejecución diferida.
  7. IQueryable soporta una consulta personalizada utilizando CreateQuery y ejecución de métodos.
  8. IQueryable soporta carga diferida (Lazy Loading). Por lo tanto es adecuado para paginación.