Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las implementaciones LINQ to Objects de los métodos de operador de consulta estándar se ejecutan de una de estas dos maneras principales: inmediatas o diferidas. Los operadores de consulta que usan la ejecución diferida se pueden dividir además en dos categorías: streaming y no streaming. Si sabe cómo se ejecutan los distintos operadores de consulta, puede ayudarle a comprender los resultados que obtiene de una consulta determinada. Esto es especialmente cierto si el origen de datos está cambiando o si va a crear una consulta sobre otra consulta. En este tema se clasifica a los operadores de consulta estándar según su modo de ejecución.
Modales de ejecución
Inmediata
La ejecución inmediata significa que se lee el origen de datos y la operación se realiza en el punto del código donde se declara la consulta. Todos los operadores de consulta estándar que devuelven un único resultado no enumerable se ejecutan inmediatamente.
Aplazado
La ejecución diferida significa que la operación no se realiza en el punto del código donde se declara la consulta. La operación solo se realiza cuando se enumera la variable de consulta, por ejemplo mediante una For Each
instrucción . Esto significa que los resultados de ejecutar la consulta dependen del contenido del origen de datos cuando se ejecuta la consulta en lugar de cuando se define la consulta. Si la variable de consulta se enumera varias veces, los resultados pueden diferir cada vez. Casi todos los operadores de consulta estándar cuyo tipo de valor devuelto es IEnumerable<T> o IOrderedEnumerable<TElement> se ejecutan de forma diferida.
Los operadores de consulta que usan la ejecución diferida se pueden clasificar además como streaming o no streaming.
Transmisión en línea
Los operadores de streaming no tienen que leer todos los datos de origen antes de que produzcan elementos. En el momento de la ejecución, un operador de streaming realiza su operación en cada elemento de origen mientras se lee y proporciona el elemento si es necesario. Un operador de streaming continúa leyendo elementos de origen hasta que se pueda generar un elemento de resultado. Esto significa que se puede leer más de un elemento de origen para generar un elemento de resultado.
No streaming
Los operadores de no streaming deben leer todos los datos de origen antes de poder proporcionar un elemento de resultado. Las operaciones como la ordenación o la agrupación se dividen en esta categoría. En el momento de la ejecución, los operadores de consulta que no son de streaming leen todos los datos de origen, lo colocan en una estructura de datos, realizan la operación y producen los elementos resultantes.
Tabla de clasificación
En la tabla siguiente se clasifica cada método de operador de consulta estándar según su método de ejecución.
Nota:
Si un operador está marcado en dos columnas, dos secuencias de entrada intervienen en la operación y cada secuencia se evalúa de forma diferente. En estos casos, siempre es la primera secuencia de la lista de parámetros que se evalúa de forma diferida y de streaming.
Consulte también
- Enumerable
- Información General sobre los Operadores de Consulta Estándar (Visual Basic)
- Sintaxis de las expresiones de consulta para operadores de consulta estándar (Visual Basic)
- LINQ to Objects (Visual Basic)