Klasyfikacja standardowych operatorów zapytań w oparciu o sposób działania
LINQ Do obiektów implementacje metod operator kwerendy standardowe wykonanie w jednym z dwóch sposobów: natychmiastowego lub opóźnionego.Operatory użyć odroczonego wykonanie kwerendy można dodatkowo podzielić na dwie kategorie: przesyłanie strumieniowe i strumieniowej transmisji. Jeśli wiesz, jak wykonać kwerendy różnych podmiotów gospodarczych, to może pomóc lepiej zrozumieć wyniki, które można uzyskać od danej kwerendy.Dotyczy to szczególnie, jeśli źródło danych jest zmieniany, lub jeśli tworzysz kwerendy na innej kwerendy.W tym temacie klasyfikuje operatory kwerendy standardowe zgodnie z ich sposób wykonywania.
Sposób wykonania
Natychmiastowe
Natychmiastowe wykonanie oznacza, że źródło danych jest odczytywany i operacja jest wykonywana w punkcie w kodzie, gdy kwerenda jest zadeklarowany.Wszystkie operatory kwerendy standardowe, zwracających wynik pojedynczego, agregującym wykonaj natychmiast.
Odroczone
Wykonanie odroczonego oznacza, że operacja jest nie wykonywana w punkcie w kodzie gdy kwerenda jest zadeklarowany.Operacja jest wykonywana tylko wtedy, gdy zmienna kwerendy jest wyliczany, na przykład przy użyciu foreach (For Each w Visual Basic) instrukcji.Oznacza to, że wyniki wykonania kwerendy zależy od zawartości źródła danych po wykonaniu kwerendy zamiast od tego, kiedy kwerenda jest zdefiniowana.Jeśli zmienna kwerendy jest wyliczana wiele razy, wyniki mogą różnić się każdym. Prawie wszystkich operatorów standardowej kwerendy, których typ zwracany jest IEnumerable lub IOrderedEnumerable w sposób odroczonego.
Operatory kwerendy używające odroczonego wykonanie można dodatkowo klasyfikowane jako przesyłanie strumieniowe lub strumieniowej transmisji.
Przesyłanie strumieniowe
Operatorzy przesyłania strumieniowego nie mają odczytać wszystkich danych źródłowych przed dają one elementy.W czasie wykonywania przesyłania strumieniowego operator wykonuje jego operacji na każdy element źródłowy, jak jest do odczytu i zwraca element, jeżeli jest to właściwe.Strumieniowych operator kontynuuje się do odczytu elementów źródłowych, aż element wynik można wyprodukować.Oznacza to, że więcej niż jeden element źródłowy może odczytać do wyprodukowania jednego elementu wynik.
Przesyłanie strumieniowe
Operatory przesyłania strumieniowego inne niż musi odczytać wszystkich danych źródłowych przed plon z elementu wynik.Operacje takie jak sortowania lub grupowania należą do tej kategorii.W czasie wykonywania operatory kwerendy strumieniowej transmisji odczytu danych źródłowych, wprowadzone struktury danych, wykonać operację i plon wynikowy elementów.
Klasyfikacja tabeli
Poniższa tabela klasyfikuje każdej metody operator kwerendy standardowe zgodnie z jego metodę realizacji.
[!UWAGA]
Jeśli podmiot gospodarczy jest oznaczony w dwóch kolumnach, dwóch sekwencji wejściowych są zaangażowane w działalność i każda sekwencja jest szacowane w różny sposób.W takich przypadkach jest zawsze pierwszy sekwencji na liście parametrów, której wartość jest wyznaczana w odroczone, przesyłanie strumieniowe sposób.
Operator kwerendy standardowe |
Zwracany typ |
Natychmiastowe wykonanie |
Odroczone wykonanie przesyłania strumieniowego |
Odroczone, Non-Streaming wykonanie |
---|---|---|---|---|
TSource |
X |
|
|
|
X |
|
|
||
X |
|
|
||
|
X |
|
||
Pojedyncza wartość liczbowa |
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 |
|
|
||
Pojedyncza wartość liczbowa, TSource lub TResult |
X |
|
|
|
Pojedyncza wartość liczbowa, TSource lub TResult |
X |
|
|
|
|
X |
|
||
|
|
X |
||
|
|
X |
||
|
X |
|
||
|
X |
|
||
|
|
X |
||
|
X |
|
||
|
X |
|
||
X |
|
|
||
TSource |
X |
|
|
|
TSource |
X |
|
|
|
|
X |
|
||
|
X |
|
||
Pojedyncza wartość liczbowa |
X |
|
|
|
|
X |
|
||
|
X |
|
||
|
|
X |
||
|
|
X |
||
Tablica TSource |
X |
|
|
|
X |
|
|
||
X |
|
|
||
X |
|
|
||
|
X |
|
||
|
X |
|
Zobacz też
Informacje
Koncepcje
Standardowe operatory zapytań — Omówienie