IQueryable vs IEnumerable

Différences entre IQueryable et IEnumerable

Pour effectuer des requêtes Linq, on peut choisir des structures de liste satisfaisant une des deux interfaces IQueryable ou IEnumerable. IQueryable dérive de IEnumerable.

Caractéristiques de IEnumerable:

  • plus appropriée pour la manipulation de listes (listes génériques, Arrays etc…),
  • permet de parcourir une liste dans le sens normal,
  • exécute la requête en base, charge ensuite les données en mémoire puis effectue un filtre sur les données,
  • plus intéressant pour Linq to objects et Linq to XML
  • ne supporte pas les requête personnalisées,
  • ne supporte pas l’initialisation tardive (i.e. Lazy loading) => cette interface n’est pas adaptée pour le “paging”.

Caractéristiques de IQueryable

  • permet de parcourir une liste dans le sens normal (pas de retour en arrière et pas de déplacements entre les éléments),
  • exécute les requêtes dans les serveurs SQL,
  • est appropriée pour exécuter des requêtes sur des bases de données déportées.
  • est plus appropriée pour Linq to SQL,
  • supporte les requêtes personnalisées avec CreateQuery() et Execute(),
  • supporte l’initialisation tardive (Lazy loading) => est adapté au “paging”.

Leave a Reply