LINQ - Operatori di query
Un set di metodi di estensione che formano un modello di query è noto come operatori di query standard LINQ. Come elementi costitutivi delle espressioni di query LINQ, questi operatori offrono una gamma di funzionalità di query come filtro, ordinamento, proiezione, aggregazione e così via.
Gli operatori di query standard LINQ possono essere classificati nei seguenti in base alla loro funzionalità.
- Operatori di filtraggio
- Unisciti agli operatori
- Operazioni di proiezione
- Operatori di ordinamento
- Operatori di raggruppamento
- Conversions
- Concatenation
- Aggregation
- Operazioni quantificatrici
- Operazioni di partizione
- Operazioni di generazione
- Imposta operazioni
- Equality
- Operatori elemento
Operatori di filtraggio
Il filtraggio è un'operazione per limitare il set di risultati in modo che abbia solo elementi selezionati che soddisfano una particolare condizione.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
dove | Filtra i valori in base a una funzione predicato | dove | Dove |
OfType | Filtra i valori in base alla loro capacità di essere un tipo specificato | Non applicabile | Non applicabile |
Unisciti agli operatori
L'unione si riferisce a un'operazione in cui vengono prese di mira fonti di dati con relazioni difficili da seguire tra loro in modo diretto.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Aderire | L'operatore unisce due sequenze sulla base delle chiavi corrispondenti | partecipare ... a ... su ... uguale ... | Da x In ..., y In ... Dove xa = ya |
GroupJoin | Unisci due sequenze e raggruppa gli elementi corrispondenti | aderire ... a ... su ... uguale ... a ... | Partecipa al gruppo ... In ... On ... |
Operazioni di proiezione
La proiezione è un'operazione in cui un oggetto viene trasformato in una forma completamente nuova con solo proprietà specifiche.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Selezionare | L'operatore proietta i valori sulla base di una funzione di trasformazione | Selezionare | Selezionare |
Seleziona Molti | L'operatore proietta le sequenze di valori che si basano su una funzione di trasformazione e le appiattisce in una singola sequenza | Usa più clausole from | Utilizza più clausole From |
Operatori di ordinamento
Un'operazione di ordinamento consente di ordinare gli elementi di una sequenza sulla base di uno o più attributi.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Ordinato da | L'operatore ordina i valori in ordine crescente | ordinato da | Ordinato da |
OrderByDescending | L'operatore ordina i valori in ordine decrescente | orderby ... discendente | Ordina per ... decrescente |
Allora per | Esegue un ordinamento secondario in ordine crescente | ordinato da …, … | Ordinato da …, … |
ThenByDescending | Esegue un ordinamento secondario in ordine decrescente | orderby ..., ... discendente | Ordina per ..., ... decrescente |
Inversione | Esegue un'inversione dell'ordine degli elementi in una raccolta | Non applicabile | Non applicabile |
Operatori di raggruppamento
Gli operatori inseriscono i dati in alcuni gruppi in base a un attributo condiviso comune.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Raggruppa per | Organizza una sequenza di elementi in gruppi e restituiscili come una raccolta IEnumerable di tipo IGrouping <chiave, elemento> | gruppo ... per -o- gruppo ... per ... in ... | Group ... By ... Into ... |
ToLookup | Eseguire un'operazione di raggruppamento in cui viene restituita una sequenza di coppie di chiavi | Non applicabile | Non applicabile |
Conversioni
Gli operatori cambiano il tipo di oggetti di input e vengono utilizzati in una vasta gamma di applicazioni.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
AsEnumerable | Restituisce l'input digitato come IEnumerable <T> | Non applicabile | Non applicabile |
AsQueryable | Un IEnumerable (generico) viene convertito in un IQueryable (generico) | Non applicabile | Non applicabile |
Cast | Esegue il casting degli elementi di una raccolta in un tipo specificato | Utilizza una variabile di intervallo tipizzata in modo esplicito. Ad esempio: dalla stringa str in parole | Da ... As ... |
OfType | Filtra i valori in base al loro, a seconda della loro capacità di essere convertiti in un particolare tipo | Non applicabile | Non applicabile |
ToArray | Forza l'esecuzione della query e converte una raccolta in un array | Non applicabile | Non applicabile |
ToDictionary | Sulla base di una funzione di selezione della chiave imposta gli elementi in un Dictionary <TKey, TValue> e forza l'esecuzione di una query LINQ | Non applicabile | Non applicabile |
Elencare | Forza l'esecuzione di una query convertendo una raccolta in un List <T> | Non applicabile | Non applicabile |
ToLookup | Forza l'esecuzione di una query e inserisce elementi in una ricerca <TKey, TElement> sulla base di una funzione di selettore chiave | Non applicabile | Non applicabile |
Concatenazione
Esegue la concatenazione di due sequenze ed è abbastanza simile all'operatore dell'Unione in termini di funzionamento, tranne per il fatto che questo non rimuove i duplicati.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Concat | Due sequenze vengono concatenate per la formazione di un'unica sequenza. | Non applicabile | Non applicabile |
Aggregazione
Esegue qualsiasi tipo di aggregazione desiderata e consente di creare aggregazioni personalizzate in LINQ.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Aggregato | Opera sui valori di una raccolta per eseguire un'operazione di aggregazione personalizzata | Non applicabile | Non applicabile |
Media | Viene calcolato il valore medio di una raccolta di valori | Non applicabile | Aggregato ... In ... Into Average () |
Contare | Conta gli elementi che soddisfano una funzione predicato all'interno della raccolta | Non applicabile | Aggrega ... In ... Into Count () |
LonCount | Conta gli elementi che soddisfano una funzione predicativa all'interno di una vasta raccolta | Non applicabile | Aggrega ... In ... Into LongCount () |
Max | Scopri il valore massimo all'interno di una collezione | Non applicabile | Aggrega ... In ... Into Max () |
Min | Scopri il valore minimo esistente all'interno di una collezione | Non applicabile | Aggrega ... In ... In Min () |
Somma | Scopri la somma di valori all'interno di una raccolta | Non applicabile | Aggrega ... In ... Into Sum () |
Operazioni quantificatrici
Questi operatori restituiscono un valore booleano, ovvero Vero o Falso, quando alcuni o tutti gli elementi all'interno di una sequenza soddisfano una condizione specifica.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Tutti | Restituisce un valore "True" se tutti gli elementi di una sequenza soddisfano una condizione del predicato | Non applicabile | Aggrega ... In ... Into All (...) |
Qualunque | Determina mediante la ricerca di una sequenza se qualsiasi elemento della stessa soddisfa una condizione specificata | Non applicabile | Aggrega ... In ... In qualsiasi () |
Contiene | Restituisce un valore "Vero" se rileva che un elemento specifico è presente in una sequenza se la sequenza non contiene quell'elemento specifico, viene restituito il valore "falso" | Non applicabile | Non applicabile |
Operatori di partizione
Dividi una sequenza di input in due sezioni separate senza riorganizzare gli elementi della sequenza e quindi restituirne uno.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Salta | Salta un numero specificato di elementi all'interno di una sequenza e restituisce quelli rimanenti | Non applicabile | Salta |
SkipWhile | Uguale a quello di Skip con la sola eccezione che il numero di elementi da saltare è specificato da una condizione booleana | Non applicabile | Salta mentre |
Prendere | Prendi un numero specificato di elementi da una sequenza e salta quelli rimanenti | Non applicabile | Prendere |
TakeWhile | Uguale a quello di Take tranne per il fatto che il numero di elementi da prendere è specificato da una condizione booleana | Non applicabile | Prendi tempo |
Operazioni di generazione
Una nuova sequenza di valori viene creata dagli operatori generazionali.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
DefaultIfEmpty | Quando applicato a una sequenza vuota, genera un elemento predefinito all'interno di una sequenza | Non applicabile | Non applicabile |
Vuoto | Restituisce una sequenza di valori vuota ed è l'operatore generazionale più semplice | Non applicabile | Non applicabile |
Gamma | Genera una raccolta con una sequenza di numeri interi o numeri | Non applicabile | Non applicabile |
Ripetere | Genera una sequenza contenente valori ripetuti di una lunghezza specifica | Non applicabile | Non applicabile |
Imposta operazioni
Sono disponibili quattro operatori per le operazioni impostate, ciascuno dei quali produce un risultato basato su criteri diversi.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
Distinto | Ottiene un elenco di valori univoci da una raccolta filtrando i dati duplicati, se presenti | Non applicabile | Distinto |
Tranne | Confronta i valori di due raccolte e restituisce quelli di una raccolta che non si trovano nell'altra | Non applicabile | Non applicabile |
Interseca | Restituisce l'insieme di valori trovati identici in due raccolte separate | Non applicabile | Non applicabile |
Unione | Combina il contenuto di due diverse raccolte in un unico elenco anche questo senza alcun contenuto duplicato | Non applicabile | Non applicabile |
Uguaglianza
Confronta due frasi (enumerabili) e determina se sono una corrispondenza esatta o meno.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
SequenceEqual | Restituisce un valore booleano se due sequenze sono identiche l'una all'altra | Non applicabile | Non applicabile |
Operatori elemento
Ad eccezione di DefaultIfEmpty, tutti gli altri otto operatori di elementi di query standard restituiscono un singolo elemento da una raccolta.
Operatore | Descrizione | Sintassi delle espressioni di query C # | Sintassi delle espressioni di query VB |
---|---|---|---|
ElementAt | Restituisce un elemento presente all'interno di un indice specifico in una raccolta | Non applicabile | Non applicabile |
ElementAtOrDefault | Uguale a ElementAt tranne per il fatto che restituisce anche un valore predefinito nel caso in cui l'indice specifico sia fuori intervallo | Non applicabile | Non applicabile |
Primo | Recupera il primo elemento all'interno di una raccolta o il primo elemento che soddisfa una condizione specifica | Non applicabile | Non applicabile |
FirstOrDefault | Uguale a First tranne per il fatto che restituisce anche un valore predefinito nel caso in cui non esistano tali elementi | Non applicabile | Non applicabile |
Scorso | Recupera l'ultimo elemento presente in una raccolta o l'ultimo elemento che soddisfa una condizione specifica | Non applicabile | Non applicabile |
LastOrDefault | Uguale a Last tranne per il fatto che restituisce anche un valore predefinito nel caso in cui non esista alcun elemento di questo tipo | Non applicabile | Non applicabile |
Single | Restituisce l'elemento solitario di una raccolta o l'elemento solitario che soddisfa una determinata condizione | Non applicabile | Non applicabile |
SingleOrDefault | Uguale a Single tranne per il fatto che restituisce un valore predefinito se non esiste alcun elemento solitario di questo tipo | Non applicabile | Non applicabile |
DefaultIfEmpty | Restituisce un valore predefinito se la raccolta o l'elenco è vuoto o nullo | Non applicabile | Non applicabile |