Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
LINQ-till-objekt-implementeringarna av standardmetoderna för frågeoperatorer körs på något av två huvudsakliga sätt: omedelbart eller uppskjutet. De frågeoperatorer som använder uppskjuten körning kan dessutom delas in i två kategorier: direktuppspelning och icke-direktuppspelning. Om du vet hur de olika frågeoperatorerna körs kan det hjälpa dig att förstå de resultat som du får från en viss fråga. Detta gäller särskilt om datakällan ändras eller om du skapar en fråga ovanpå en annan fråga. Det här avsnittet klassificerar standardfrågeoperatorerna enligt deras utförandesätt.
Metoder för genomförande
Omedelbar
Omedelbar körning innebär att datakällan läses och att åtgärden utförs vid den punkt i koden där förfrågan deklareras. Alla standardfrågeoperatorer som returnerar ett enda, icke-uppräkningsbart resultat körs omedelbart.
Uppskjuten
Uppskjuten körning innebär att åtgärden inte utförs vid den punkt i koden där frågan deklareras. Åtgärden utförs endast när frågevariabeln räknas upp, till exempel med hjälp av en For Each-instruktion. Det innebär att resultatet av att köra frågan beror på innehållet i datakällan när frågan körs i stället för när frågan definieras. Om frågevariabeln räknas upp flera gånger kan resultatet variera varje gång. Nästan alla standardfrågeoperatorer vars returtyp är IEnumerable<T> eller IOrderedEnumerable<TElement> körs med fördröjning.
Frågeoperatorer som använder uppskjuten körning kan dessutom klassificeras som direktuppspelning eller icke-direktuppspelning.
Strömmande
Strömningsoperatorer behöver inte läsa alla källdata innan de ger element. Vid körningsögonblicket utför en strömningsoperator sin åtgärd på varje källelement när det läses och producerar elementet om det är lämpligt. En strömningsoperator fortsätter att läsa källelement tills ett resultatelement kan skapas. Det innebär att mer än ett källelement kan läsas för att skapa ett resultatelement.
Ej strömmad
Icke-strömmande operatorer måste läsa alla källdata innan de kan ge ett resultatelement. Åtgärder som sortering eller gruppering tillhör den här kategorin. Vid tidpunkten för körningen läser icke-strömmande frågeoperatorer alla källdata, placerar dem i en datastruktur, utför åtgärden och ger de resulterande elementen.
Klassificeringstabell
I följande tabell klassificeras varje standardmetod för frågeoperatorer enligt dess körningsmetod.
Anmärkning
Om en operator är markerad i två kolumner är två indatasekvenser inblandade i åtgärden och varje sekvens utvärderas på olika sätt. I dessa fall är det alltid den första sekvensen i parameterlistan som utvärderas på ett uppskjutet, strömmande sätt.