Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A standard lekérdezésoperátori metódusok LINQ to Objects implementációi két fő módszer egyikét hajtják végre: azonnali vagy halasztott. A késleltetett végrehajtást használó lekérdezési operátorok két kategóriába sorolhatók: streamelés és nem streamelés. Ha tudja, hogyan hajtják végre a különböző lekérdezési operátorokat, az segíthet megérteni az adott lekérdezésből kapott eredményeket. Ez különösen igaz, ha az adatforrás változik, vagy ha egy lekérdezést egy másik lekérdezésre épít. Ez a témakör a szabványos lekérdezési operátorokat a végrehajtásuk módjának megfelelően sorolja be.
Végrehajtási módok
Azonnali
Az azonnali végrehajtás azt jelenti, hogy az adatforrás beolvasása és a művelet végrehajtása a kód azon pontján történik, ahol a lekérdezés deklarálva van. Az egyetlen, nem számozható eredményt visszaadó standard lekérdezési operátorok mindegyike azonnal végrehajtja a végrehajtást.
Halasztott
A késleltetett végrehajtás azt jelenti, hogy a műveletet nem a kód azon pontján hajtják végre, ahol a lekérdezés deklarálva van. A műveletet csak akkor hajtja végre a rendszer, ha a lekérdezési változó számba van írva, például egy For Each utasítás használatával. Ez azt jelenti, hogy a lekérdezés végrehajtásának eredményei az adatforrás tartalmától függnek a lekérdezés végrehajtásakor, nem pedig a lekérdezés definiálásakor. Ha a lekérdezési változó többször van enumerálva, az eredmények minden alkalommal eltérőek lehetnek. Szinte minden olyan szabványos lekérdezési operátor, amelynek visszatérési típusa IEnumerable<T> vagy IOrderedEnumerable<TElement> halasztott módon hajtható végre.
A késleltetett végrehajtást használó lekérdezési operátorokat tovább lehet sorolni streamelésnek vagy nem streamelésnek.
Online közvetítés
A streamszolgáltatóknak nem kell beolvasniuk az összes forrásadatot, mielőtt elemeket hoznának létre. A végrehajtáskor a streamszolgáltató minden forráselemen végrehajtja a műveletet az olvasás során, és adott esetben az elemet adja meg. A streamszolgáltató továbbra is olvassa a forráselemeket, amíg létre nem jön egy eredményelem. Ez azt jelenti, hogy egy eredményelem előállításához több forráselem is olvasható.
Streamelés nélküli mód
A nem streamelő operátoroknak be kell olvasniuk az összes forrásadatot, mielőtt eredményt kaphatnak. Az olyan műveletek, mint a rendezés vagy a csoportosítás ebbe a kategóriába tartoznak. A végrehajtáskor a nem streamelt lekérdezési operátorok beolvassák az összes forrásadatot, adatstruktúrába helyezik, végrehajtják a műveletet, és az eredményül kapott elemeket eredményezik.
Besorolási táblázat
Az alábbi táblázat az egyes standard lekérdezési operátor-metódusokat a végrehajtási módszerének megfelelően sorolja be.
Megjegyzés:
Ha egy operátor két oszlopban van megjelölve, két bemeneti sorozat vesz részt a műveletben, és az egyes sorozatok kiértékelése másképp történik. Ezekben az esetekben mindig ez az első sorozat a paraméterlistában, amelyet halasztott, streamelési módon értékelnek ki.