Conversione del tipo di dati (Visual Basic)
I metodi di conversione modificano il tipo degli oggetti di input.
Le operazioni di conversione nelle query LINQ sono utili in un'ampia gamma di applicazioni. Di seguito vengono riportati alcuni esempi:
Il metodo Enumerable.AsEnumerable può essere usato per nascondere l'implementazione personalizzata di un tipo di un operatore query standard.
Il metodo Enumerable.OfType può essere usato per abilitare le raccolte senza parametri per l'esecuzione di query LINQ.
I metodi Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList e Enumerable.ToLookup possono essere usati per forzare l'esecuzione di una query immediata invece che rinviarla fino a quando la query non viene enumerata.
Metodi
Nella tabella seguente sono elencati i metodi di operatore query standard che eseguono conversioni di tipi di dati.
I metodi di conversione nella tabella i cui nomi iniziano con "As" modificano il tipo statico della raccolta di origine ma non lo enumerano. I metodi i cui nomi iniziano con "To" enumerano la raccolta di origine e inseriscono gli elementi nel tipo di raccolta corrispondente.
Nome metodo | Descrizione | Sintassi delle espressioni di query di Visual Basic | Ulteriori informazioni |
---|---|---|---|
AsEnumerable | Restituisce l'input tipizzato come oggetto IEnumerable<T>. | Non applicabile. | Enumerable.AsEnumerable |
AsQueryable | Converte un oggetto IEnumerable (generico) in un oggetto IQueryable (generico). | Non applicabile. | Queryable.AsQueryable |
Cast | Esegue il cast degli elementi di una raccolta a un tipo specificato. | From … As … |
Enumerable.Cast Queryable.Cast |
OfType | Filtra i valori, a seconda della loro capacità di eseguire il cast a un tipo specificato. | Non applicabile. | Enumerable.OfType Queryable.OfType |
ToArray | Converte una raccolta in una matrice. Questo metodo forza l'esecuzione di query. | Non applicabile. | Enumerable.ToArray |
ToDictionary | Inserisce gli elementi in un oggetto Dictionary<TKey,TValue> sulla base di una funzione del selettore di chiavi. Questo metodo forza l'esecuzione di query. | Non applicabile. | Enumerable.ToDictionary |
ToList | Converte una raccolta in un oggetto List<T>. Questo metodo forza l'esecuzione di query. | Non applicabile. | Enumerable.ToList |
ToLookup | Inserisce gli elementi in un oggetto Lookup<TKey,TElement>, un dizionario uno-a-molti, sulla base di una funzione del selettore di chiavi. Questo metodo forza l'esecuzione di query. | Non applicabile. | Enumerable.ToLookup |
Esempio di sintassi delle espressioni di query
L'esempio di codice seguente usa la clausola From As
per eseguire il cast di un tipo a un sottotipo prima di accedere a un membro che è disponibile solo nel sottotipo.
Class Plant
Public Property Name As String
End Class
Class CarnivorousPlant
Inherits Plant
Public Property TrapType As String
End Class
Sub Cast()
Dim plants() As Plant = {
New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"},
New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"},
New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"},
New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}
Dim query = From plant As CarnivorousPlant In plants
Where plant.TrapType = "Snap Trap"
Select plant
Dim sb As New System.Text.StringBuilder()
For Each plant In query
sb.AppendLine(plant.Name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Venus Fly Trap
' Waterwheel Plant
End Sub