dans .net,
et sont les deux structures de données de base qui indiquent la séquence d'objets. Les deux peuvent être utilisés avec la formule d'expression de LINQ (intégration du langage) pour effectuer la conversion et l'agrégation des données, mais elles sont différentes en termes de comportement et de caractéristiques de performance. IEnumerable
List
Comportement à l'exécution
est une interface qui définit le comportement de la séquence d'élément itérative. Il fournit la méthode , qui renvoie un objet de l'interface . Lorsque vous itérez la collection , les énimeurs ont traversé un élément à la fois.
Dans le code du code que vous fournissez, le type de variable IEnumerable
est GetEnumerator()
. Lorsque vous déboguez et vérifiez, vous remarquerez des membres tels que "intérieur" et "extérieur". Ces membres font partie de la mise en œuvre interne de LINQ et du pipeline de requête sous-jacent. IEnumerator
IEnumerable
Les membres "intérieurs" incluent généralement le résultat intermédiaire de l'expression LINQ avant l'application de toute conversion ou scripter supplémentaire. Il est particulièrement utile pour les demandes de débogage complexes.
Précautions de performance sel
IEnumerable<animal>
List<animal>
En termes de performances, offre généralement une meilleure flexibilité et une meilleure capacité d'optimisation. L'expression LINQ est retardée, ce qui signifie qu'ils ne peuvent être exécutés que lorsque vous énumérez la séquence. Cela permet au compilateur et à l'exécution de l'optimisation des requêtes et à une évaluation retardée en arrière-plan.
D'un autre côté, utilisez la méthode
pour convertiren pour forcer la requête immédiatement et charger tous les résultats en mémoire. Si vous devez accéder à des données plusieurs fois, cela peut être plus efficace car il élimine les dépenses en double.
D'une manière générale, lorsque vous n'avez besoin que d'itérer la séquence et que vous souhaitez utiliser une évaluation de retard, il est recommandé d'utiliser. Si vous devez accéder plusieurs fois aux données ou si vous devez les stocker dans la structure de données statique, il peut être converti en IEnumerable
pour améliorer les performances.
Exemples spécifiques .ToList()
IEnumerable
List
Le code que vous fournissez montre comment utiliser
, vous pouvez utiliser IEnumerable
et List
pour le dépister sans effectuer la requête entière plusieurs fois.
Cependant, si vous devez énumérer le léopard et les boulettes plusieurs fois, il sera converti en liste pour utiliser plus efficace. De cette façon, chaque ensemble de requêtes de base de données ne sera effectuée qu'une seule fois.
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!