Classification des opérateurs de requête standard en fonction de leur mode d'exécution
Les implémentations LINQ vers des objets des méthodes d'opérateur de requête standard s'exécutent dans l'une de deux manières principales : immédiate ou différée. Les opérateurs de requête qui utilisent l'exécution différée peuvent être divisés en deux catégories : diffusion en continu ou non continue. Si vous connaissez le mode d'exécution des différents opérateurs de requête, cela peut vous aider à comprendre les résultats obtenus à partir d'une requête donnée. C'est particulièrement vrai si la source de données change ou si vous générez une requête sur une autre requête. Cette rubrique classe les opérateurs de requête standard d'après leur manière d'exécution.
Modes d'exécution
Immédiat
L'exécution immédiate signifie que la source de données est lue et que l'opération est effectuée au point où la requête est déclarée dans le code. Tous les opérateurs de requête standard qui retournent un résultat unique et non énumérable s'exécutent immédiatement.
Différé
L'exécution différée signifie que l'opération n'est pas effectuée au point où la requête est déclarée dans le code. L'opération est effectuée uniquement lorsque la variable de requête est énumérée, par exemple à l'aide d'une instruction foreach (For Each dans Visual Basic). Cela signifie que les résultats de l'exécution de la requête dépendent du contenu de la source de données lorsque la requête est exécutée plutôt que lorsqu'elle est définie. Si la variable de requête est énumérée plusieurs fois, les résultats peuvent s'avérer différents chaque fois. Presque tous les opérateurs de requête standard dont le type de retour est IEnumerable ou IOrderedEnumerable s'exécutent de manière différée.
Les opérateurs de requête qui utilisent l'exécution différée peuvent en outre être classés comme diffusion en continu ou diffusion non continue.
Diffusion en continu
Les opérateurs diffusant en continu n'ont pas à lire toutes les données sources avant d'obtenir des éléments. Au moment de l'exécution, un opérateur diffusant en continu effectue son opération sur chaque élément source à mesure qu'il est lu et obtient l'élément si nécessaire. Ce type d'opérateur continue à lire des éléments source jusqu'à ce qu'un élément de résultat puisse être produit. Cela signifie que plusieurs éléments source peuvent être lus pour produire un élément de résultat.
Diffusion non continue
Les opérateurs qui ne diffusent pas en continu doivent lire toutes les données source avant qu'ils puissent obtenir un élément de résultat. Les opérations telles que le tri ou le regroupement font partie de cette catégorie. Pendant l'exécution, les opérateurs de requête non continue lisent toutes les données source, les placent dans une structure de données, puis effectuent l'opération et obtiennent les éléments de résultat.
Tableau de classification
Le tableau suivant classe chaque méthode d'opérateur de requête standard d'après son mode d'exécution.
Notes
Si un opérateur est marqué dans deux colonnes, deux séquences d'entrée sont impliquées dans l'opération et chacune d'elles est évaluée différemment.Dans ces cas, c'est toujours la première séquence dans la liste de paramètres qui est évaluée de façon différée, en continu.
Opérateur de requête standard |
Return Type |
Exécution immédiate |
Exécution en continu différée |
Exécution non continue différée |
---|---|---|---|---|
TSource |
X |
|
|
|
X |
|
|
||
X |
|
|
||
|
X |
|
||
Valeur numérique unique |
X |
|
|
|
|
X |
|
||
|
X |
|
||
X |
|
|
||
X |
|
|
||
|
X |
|
||
|
X |
|
||
TSource |
X |
|
|
|
TSource |
X |
|
|
|
X |
|
|
||
|
X |
X |
||
TSource |
X |
|
|
|
TSource |
X |
|
|
|
|
|
X |
||
|
X |
X |
||
|
X |
X |
||
|
X |
X |
||
TSource |
X |
|
|
|
TSource |
X |
|
|
|
X |
|
|
||
Valeur numérique unique, TSource ou TResult |
X |
|
|
|
Valeur numérique unique, TSource ou TResult |
X |
|
|
|
|
X |
|
||
|
|
X |
||
|
|
X |
||
|
X |
|
||
|
X |
|
||
|
|
X |
||
|
X |
|
||
|
X |
|
||
X |
|
|
||
TSource |
X |
|
|
|
TSource |
X |
|
|
|
|
X |
|
||
|
X |
|
||
Valeur numérique unique |
X |
|
|
|
|
X |
|
||
|
X |
|
||
|
|
X |
||
|
|
X |
||
Tableau TSource |
X |
|
|
|
X |
|
|
||
X |
|
|
||
X |
|
|
||
|
X |
|
||
|
X |
|
Voir aussi
Référence
Concepts
Vue d'ensemble des opérateurs de requête standard
Syntaxe des expressions de requête pour les opérateurs de requête standard