Partager via


Conversion de types de données

Mise à jour : novembre 2007

Les méthodes de conversion modifient le type d'objets en entrée.

Les opérations de conversion dans les requêtes LINQ sont utiles dans diverses applications. Par exemple :

Méthodes

Le tableau suivant répertorie les méthodes d'opérateur de requête standard qui effectuent des conversions de type de données.

Les méthodes de conversion de ce tableau dont les noms commencent par « As » modifient le type statique de la collection de sources mais ne l'énumèrent pas. Les méthodes dont les noms commencent par « To » énumèrent la collection de sources et placent les éléments dans le type de collection correspondant.

Nom de la méthode

Description

Syntaxe d'expression de requête C#

Syntaxe d'expression de requête Visual Basic

Informations supplémentaires

AsEnumerable

Retourne l'entrée typée comme IEnumerable<T>.

Non applicable.

Non applicable.

Enumerable.AsEnumerable<TSource>

AsQueryable

Convertit un IEnumerable (générique) en IQueryable (générique).

Non applicable.

Non applicable.

Queryable.AsQueryable

Cast

Effectue un cast des éléments d'une collection en un type spécifié.

Utilisez une variable de portée explicitement typée. Par exemple :

from string str in words

From … As …

Enumerable.Cast<TResult>

Queryable.Cast<TResult>

OfType

Filtre des valeurs, en fonction de leur capacité à être castées en un type spécifié.

Non applicable.

Non applicable.

Enumerable.OfType<TResult>

Queryable.OfType<TResult>

ToArray

Convertit une collection en un tableau. Cette méthode force l'exécution de la requête.

Non applicable.

Non applicable.

Enumerable.ToArray<TSource>

ToDictionary

Met des éléments dans un Dictionary<TKey, TValue> basé sur une fonction de sélection de clé. Cette méthode force l'exécution de la requête.

Non applicable.

Non applicable.

Enumerable.ToDictionary

ToList

Convertit une collection en List<T>. Cette méthode force l'exécution de la requête.

Non applicable.

Non applicable.

Enumerable.ToList<TSource>

ToLookup

Met des éléments dans un Lookup<TKey, TElement> (un dictionnaire de type un-à-plusieurs) basé sur une fonction de sélection de clé. Cette méthode force l'exécution de la requête.

Non applicable.

Non applicable.

Enumerable.ToLookup

Exemple de syntaxe d'expression de requête

L'exemple de code suivant utilise une variable de portée explicitement typée en C# ou la clause From As dans Visual Basic pour effectuer un cast d'un type en un sous-type avant d'accéder à un membre qui est uniquement disponible sur le sous-type.

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
    */
}

En savoir plus sur la conversion de types de données

Voir aussi

Concepts

Vue d'ensemble des opérateurs de requête standard

Expressions de requête LINQ (Guide de programmation C#)

Référence

from, clause (Référence C#)

From, clause (Visual Basic)

System.Linq