Condividi tramite


Conversione del tipo di dati

Aggiornamento: novembre 2007

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:

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 tipizzato come IEnumerable<T>.

Non applicabile.

Non applicabile.

Enumerable.AsEnumerable<TSource>

AsQueryable

Converte un oggetto IEnumerable generico in un oggetto IQueryable generico.

Non applicabile.

Non applicabile.

Queryable.AsQueryable

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 …

Enumerable.Cast<TResult>

Queryable.Cast<TResult>

OfType

Filtra i valori, a seconda della possibilità di eseguire il cast su un tipo specifico.

Non applicabile.

Non applicabile.

Enumerable.OfType<TResult>

Queryable.OfType<TResult>

ToArray

Converte un insieme in una matrice. Questo metodo forza l'esecuzione della query.

Non applicabile.

Non applicabile.

Enumerable.ToArray<TSource>

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.

Enumerable.ToDictionary

ToList

Converte un insieme in un oggetto List<T>. Questo metodo forza l'esecuzione della query.

Non applicabile.

Non applicabile.

Enumerable.ToList<TSource>

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.

Enumerable.ToLookup

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 Name As String
End Class

Class CarnivorousPlant
    Inherits Plant
    Public 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
    */
}

Ulteriori informazioni sulla conversione dei tipi di dati

Vedere anche

Concetti

Cenni preliminari sugli operatori di query standard

Espressioni query LINQ (Guida per programmatori C#)

Riferimenti

Clausola from (Riferimento C#)

Clausola From (Visual Basic)

System.Linq