Conversione del tipo di dati
I metodi di conversione modificano il tipo degli oggetti di input.
Operazioni di conversione nelle query LINQ sono utili in varie applicazioni. Di seguito vengono forniti alcuni esempi:
Il metodo Enumerable.AsEnumerable<TSource> può essere utilizzato per nascondere l'implementazione personalizzata di un tipo di un operatore di query standard.
Il metodo Enumerable.OfType<TResult> può essere utilizzato per consentire l'esecuzione di query LINQ sugli insiemi senza parametri.
I metodi Enumerable.ToArray<TSource>, Enumerable.ToDictionary, Enumerable.ToList<TSource> e Enumerable.ToLookup possono essere utilizzati per forzare l'esecuzione immediata di una query anziché rinviarla finché la query non viene enumerata.
Metodi
Nella tabella riportata di seguito vengono elencati i metodi degli operatori di query standard che eseguono le conversioni dei tipi di dati.
I metodi di conversione presenti in questa tabella i cui nomi iniziano con "As" modificano il tipo statico dell'insieme di origine ma non lo enumerano. I metodi i cui nomi iniziano con "To" enumerano l'insieme di origine e inseriscono gli elementi nel tipo di insieme corrispondente.
Nome metodo |
Descrizione |
Sintassi dell'espressione di query in C# |
Sintassi dell'espressione di query in Visual Basic |
Ulteriori informazioni |
---|---|---|---|---|
AsEnumerable |
Restituisce l'input digitato come oggetto IEnumerable<T>. |
Non applicabile. |
Non applicabile. |
|
AsQueryable |
Converte un oggetto IEnumerable generico in un oggetto IQueryable generico. |
Non applicabile. |
Non applicabile. |
|
Cast |
Esegue il cast degli elementi di un insieme su un tipo specifico. |
Utilizzare una variabile di intervallo tipizzata in modo esplicito. Ad esempio: from string str in words |
From … As … |
|
OfType |
Filtra i valori, a seconda della possibilità di eseguire il cast su un tipo specifico. |
Non applicabile. |
Non applicabile. |
|
ToArray |
Converte un insieme in una matrice. Questo metodo forza l'esecuzione della query. |
Non applicabile. |
Non applicabile. |
|
ToDictionary |
Inserisce gli elementi in un oggetto Dictionary<TKey, TValue> in base a una funzione del selettore principale. Questo metodo forza l'esecuzione della query. |
Non applicabile. |
Non applicabile. |
|
ToList |
Converte un insieme in un oggetto List<T>. Questo metodo forza l'esecuzione della query. |
Non applicabile. |
Non applicabile. |
|
ToLookup |
Inserisce gli elementi in un oggetto Lookup<TKey, TElement> (un dizionario uno a molti) in base a una funzione del selettore principale. Questo metodo forza l'esecuzione della query. |
Non applicabile. |
Non applicabile. |
Esempio di sintassi dell'espressione di query
Nell'esempio di codice seguente viene utilizzata una variabile di intervallo tipizzata in modo esplicito in C# o la clausola From As in Visual Basic per eseguire il cast di un tipo su un sottotipo prima di accedere a un membro 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
class Plant
{
public string Name { get; set; }
}
class CarnivorousPlant : Plant
{
public string TrapType { get; set; }
}
static void Cast()
{
Plant[] plants = new Plant[] {
new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
};
var query = from CarnivorousPlant cPlant in plants
where cPlant.TrapType == "Snap Trap"
select cPlant;
foreach (Plant plant in query)
Console.WriteLine(plant.Name);
/* This code produces the following output:
Venus Fly Trap
Waterwheel Plant
*/
}
Vedere anche
Attività
Procedura: eseguire una query su un ArrayList con LINQ
Riferimenti
Clausola from (Riferimento C#)