Maison  >  Article  >  développement back-end  >  Quelle est la différence entre IEnumerable et IQueryable en C# ?

Quelle est la différence entre IEnumerable et IQueryable en C# ?

王林
王林avant
2023-09-03 19:57:08888parcourir

C# 中 IEnumerable 和 IQueryable 有什么区别?

  • IEnumerable existe dans l'espace de noms System.Collections.
  • IQueryable existe dans le système. Espace de noms Linq.
  • IEnumerable et IQueryable sont tous deux des collections avancées.
  • IEnumerable ne prend pas en charge le chargement paresseux
  • IQueryable prend en charge le chargement paresseux
  • Lors de l'interrogation des données de la base de données, IEnumerable effectue une requête de sélection côté serveur, charge les données en mémoire côté client, puis filtre les données.
  • Pour interroger les données de la base de données, IQueryable effectue une sélection de requêtes côté serveur avec tous les filtres.
  • Les méthodes d'extension IEnumerable prennent des objets fonction.
  • La méthode d'extension IQueryable prend un objet d'expression signifiant arbre d'expression.

Exemple

IEnumerable

dbContext dc = new dbContext ();
IEnumerable
<SocialMedia>
list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
</SocialMedia>

Instruction SQL générée pour la requête ci-dessus

SELECT [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0

Queryable

dbContext dc = new dbContext ();
IQueryable<SocialMedia> list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);

Instruction SQL générée pour la requête ci-dessus

SELECT top 1 [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer