Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De IMPLEMENTATIEs van LINQ naar objecten van de standaardqueryoperatormethoden worden op een van de volgende twee manieren uitgevoerd: onmiddellijk of uitgesteld. De queryoperators die gebruikmaken van de uitgestelde uitvoering, kunnen worden onderverdeeld in twee categorieën: streaming en niet-streaming. Als u weet hoe de verschillende queryoperators worden uitgevoerd, kan dit u helpen de resultaten te begrijpen die u krijgt van een bepaalde query. Dit geldt met name als de gegevensbron wordt gewijzigd of als u een query bouwt boven op een andere query. In dit onderwerp worden de standaardqueryoperators ingedeeld op basis van hun manier van uitvoering.
Manieren van uitvoering
Direct
Onmiddellijke uitvoering betekent dat de gegevensbron wordt gelezen en dat de bewerking wordt uitgevoerd op het punt in de code waarin de query wordt gedeclareerd. Alle standaardqueryoperators die één niet-opsommingsbaar resultaat retourneren, worden onmiddellijk uitgevoerd.
Uitgesteld
Uitgestelde uitvoering betekent dat de bewerking niet wordt uitgevoerd op het punt in de code waarin de query wordt gedeclareerd. De bewerking wordt alleen uitgevoerd wanneer de queryvariabele wordt geïnventariseerd, bijvoorbeeld met behulp van een For Each
instructie. Dit betekent dat de resultaten van het uitvoeren van de query afhankelijk zijn van de inhoud van de gegevensbron wanneer de query wordt uitgevoerd in plaats van wanneer de query is gedefinieerd. Als de queryvariabele meerdere keren wordt geïnventariseerd, kunnen de resultaten elke keer verschillen. Bijna alle standaardqueryoperators waarvan het retourtype is IEnumerable<T> of IOrderedEnumerable<TElement> op een uitgestelde manier wordt uitgevoerd.
Queryoperators die gebruikmaken van uitgestelde uitvoering, kunnen ook worden geclassificeerd als streaming of niet-streaming.
Streaming
Streamingoperators hoeven niet alle brongegevens te lezen voordat ze elementen opleveren. Op het moment van uitvoering voert een streaming-operator de bewerking uit op elk bronelement terwijl het wordt gelezen en levert het element indien nodig op. Een streamingoperator blijft bronelementen lezen totdat een resultaatelement kan worden geproduceerd. Dit betekent dat meer dan één bronelement kan worden gelezen om één resultaatelement te produceren.
Niet-streaming
Niet-streamingoperators moeten alle brongegevens lezen voordat ze een resultaatelement kunnen opleveren. Bewerkingen zoals sorteren of groeperen vallen in deze categorie. Op het moment van uitvoering lezen niet-streamingqueryoperators alle brongegevens, plaatst u deze in een gegevensstructuur, voert u de bewerking uit en levert u de resulterende elementen op.
Classificatietabel
De volgende tabel classificeert elke standaardqueryoperatormethode op basis van de uitvoeringsmethode.
Notitie
Als een operator in twee kolommen is gemarkeerd, zijn er twee invoerreeksen betrokken bij de bewerking en wordt elke reeks anders geëvalueerd. In deze gevallen is het altijd de eerste reeks in de parameterlijst die op een uitgestelde streaming-manier wordt geëvalueerd.