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:

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.

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 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#)

Clausola From (Visual Basic)

System.Linq

Concetti

Cenni preliminari sugli operatori di query standard

LINQ Query Expressions (C# Programming Guide)