Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As implementações do LINQ to Objects dos métodos de operador de consulta padrão são executadas de uma das duas maneiras principais: imediatas ou adiadas. Os operadores de consulta que usam a execução adiada podem ser divididos adicionalmente em duas categorias: streaming e não streaming. Se você souber como os diferentes operadores de consulta são executados, isso pode ajudá-lo a entender os resultados obtidos de uma determinada consulta. Isso é especialmente verdadeiro se a fonte de dados estiver mudando ou se você estiver criando uma consulta em cima de outra consulta. Este tópico classifica os operadores de consulta padrão de acordo com sua maneira de execução.
Maneiras de execução
Imediato
A execução imediata significa que a fonte de dados é lida e a operação é executada no ponto no código em que a consulta é declarada. Todos os operadores de consulta padrão que retornam um único resultado não enumerável são executados imediatamente.
Adiado
A execução adiada significa que a operação não é executada no ponto no código em que a consulta é declarada. A operação é executada somente quando a variável de consulta é enumerada, por exemplo, usando uma For Each instrução. Isso significa que os resultados da execução da consulta dependem do conteúdo da fonte de dados quando a consulta é executada em vez de quando a consulta é definida. Se a variável de consulta for enumerada várias vezes, os resultados poderão ser diferentes sempre. Quase todos os operadores de consulta padrão cujo tipo de retorno é IEnumerable<T> ou IOrderedEnumerable<TElement> são executados de forma adiada.
Operadores de consulta que usam a execução adiada podem ser classificados adicionalmente como streaming ou não streaming.
Transmissão ao vivo
Os operadores de streaming não precisam ler todos os dados de origem antes de produzirem elementos. No momento da execução, um operador de streaming executa sua operação em cada elemento de origem conforme ele é lido e produz o elemento, se apropriado. Um operador de streaming continua a ler elementos de origem até que um elemento de resultado possa ser produzido. Isso significa que mais de um elemento de origem pode ser lido para produzir um elemento de resultado.
Não streaming
Os operadores não streaming devem ler todos os dados de origem antes de produzirem um elemento de resultado. Operações como classificação ou agrupamento se enquadram nessa categoria. No momento da execução, os operadores de consulta não streaming leem todos os dados de origem, colocam-nos em uma estrutura de dados, realizam a operação e geram os elementos de resultado.
Tabela de classificação
A tabela a seguir classifica cada método de operador de consulta padrão de acordo com seu método de execução.
Observação
Se um operador for marcado em duas colunas, duas sequências de entrada estarão envolvidas na operação e cada sequência será avaliada de forma diferente. Nesses casos, é sempre a primeira sequência na lista de parâmetros que é avaliada de maneira adiada e de streaming.