Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le implementazioni LINQ to Objects dei metodi dell'operatore di query standard vengono eseguite in uno dei due modi principali: immediato o posticipato. Gli operatori di query che usano l'esecuzione posticipata possono essere suddivisi in due categorie: streaming e non streaming. Se si conosce il modo in cui vengono eseguiti i diversi operatori di query, può essere utile comprendere i risultati ottenuti da una determinata query. Ciò vale soprattutto se l'origine dati sta cambiando o se si sta creando una query sopra un'altra query. Questo argomento classifica gli operatori di query standard in base alla modalità di esecuzione.
Modalità di esecuzione
Immediato
L'esecuzione immediata indica che la fonte dei dati viene letta e l'operazione viene eseguita nel punto del codice in cui viene dichiarata la query. Tutti gli operatori di query standard che restituiscono un singolo risultato non enumerabile vengono eseguiti immediatamente.
Differito
L'esecuzione posticipata indica che l'operazione non viene eseguita nel punto del codice in cui viene dichiarata la query. L'operazione viene eseguita solo quando la variabile di query viene enumerata, ad esempio usando un'istruzione For Each . Ciò significa che i risultati dell'esecuzione della query dipendono dal contenuto dell'origine dati quando la query viene eseguita anziché da quando viene definita la query. Se la variabile di query viene enumerata più volte, i risultati possono variare ogni volta. Quasi tutti gli operatori di query standard il cui tipo restituito è IEnumerable<T> o IOrderedEnumerable<TElement> vengono eseguiti in modo posticipato.
Gli operatori di query che usano l'esecuzione posticipata possono essere ulteriormente classificati come streaming o non-streaming.
Trasmissione in diretta
Gli operatori di streaming non devono leggere tutti i dati di origine prima di produrre elementi. Al momento dell'esecuzione, un operatore di streaming esegue l'operazione su ogni elemento di origine durante la lettura e restituisce l'elemento, se appropriato. Un operatore di streaming continua a leggere gli elementi di origine fino a quando non è possibile produrre un elemento risultato. Ciò significa che più di un elemento di origine potrebbero essere letti per produrre un elemento risultato.
Non streaming
Gli operatori non di streaming devono leggere tutti i dati di origine prima di poter restituire un elemento risultato. Le operazioni come l'ordinamento o il raggruppamento rientrano in questa categoria. Al momento dell'esecuzione, gli operatori di query non di streaming leggono tutti i dati di origine, li inseriscono in una struttura di dati, eseguono l'operazione e producono gli elementi risultanti.
Tabella di classificazione
La tabella seguente classifica ogni metodo dell'operatore di query standard in base al relativo metodo di esecuzione.
Annotazioni
Se un operatore è contrassegnato in due colonne, due sequenze di input sono coinvolte nell'operazione e ogni sequenza viene valutata in modo diverso. In questi casi, è sempre la prima sequenza nell'elenco di parametri che viene valutata in modo posticipato e in streaming.