Maison >développement back-end >C++ >IEnumerable vs List dans Linq: Quand devriez-vous utiliser chacun?
Lorsque vous utilisez LINQ pour construire des requêtes, les développeurs sont souvent confrontés au choix de et
comme problème de type cible. Pour clarifier ce choix, explorons leur comportement et leurs différences de performance.
IEnumerable
fonctionnel vs similaire List
Il représente un concept abstrait et décrit comment itérer les données. Il n'a pas de méthode de stockage ou d'accès de données spécifiée. D'un autre côté, est l'implémentation spécifique de , qui stocke les données dans un tableau de taille fixe. Lorsque vous utilisez , le compilateur peut être plus retardé et optimisé de manière plus flexible.
Exemple: requête Linq et ienumeration IEnumerable
List
Considérez la requête LINQ suivante: IEnumerable
IEnumerable
pour retourner . Dans , des membres internes tels que "interne" et "externe" ont des membres internes pour gérer l'enquête et l'évaluation.
Évaluation retardée vs évaluation impatient
<code class="language-csharp">IEnumerable<animal> sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct();</code>Soutenir l'évaluation retardée, ce qui signifie que l'exécution réelle de la requête retardera lors de l'accès aux données pendant l'itération. Au lieu de cela, l'utilisation de obligera immédiatement la requête à générer l'objet
. Distinct()
IEnumerable<animal>
quand utiliser ienumeration IEnumerable
Lorsque les situations suivantes se produisent, plus:
Vous avez l'intention d'empiler plusieurs expressions LINQ pour permettre une évaluation et une optimisation retardées. IEnumerable
ToList()
Vous souhaitez éviter le traitement inutile en ne renvoyant que des données qui ne nécessitent que des besoins réels. List
Quand utiliser la liste
Lorsque les situations suivantes se produisent, est plus favorable: IEnumerable
En termes de performances, si la requête exécute plusieurs ou pour l'exécution de la source de données distante,
peut être plus efficace que. Cependant, si vous devez accéder à plusieurs reprises aux résultats de la requête, List
peut fournir de meilleures performances en évitant plusieurs évaluations.
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!