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 :
La méthode Enumerable.AsEnumerable<TSource> peut être utilisée pour masquer l'implémentation personnalisée d'un type d'un opérateur de requête standard.
La méthode Enumerable.OfType<TResult> peut être utilisée pour activer des collections non paramétrées pour l'interrogation LINQ.
Les méthodes Enumerable.ToArray<TSource>, Enumerable.ToDictionary, Enumerable.ToList<TSource> et Enumerable.ToLookup peuvent être utilisées pour forcer l'exécution immédiate de la requête au lieu de la différer jusqu'à ce que la requête soit énumérée.
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. |
|
AsQueryable |
Convertit un IEnumerable (générique) en IQueryable (générique). |
Non applicable. |
Non applicable. |
|
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 … |
|
OfType |
Filtre des valeurs, en fonction de leur capacité à être castées en un type spécifié. |
Non applicable. |
Non applicable. |
|
ToArray |
Convertit une collection en un tableau. Cette méthode force l'exécution de la requête. |
Non applicable. |
Non applicable. |
|
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. |
|
ToList |
Convertit une collection en List<T>. Cette méthode force l'exécution de la requête. |
Non applicable. |
Non applicable. |
|
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. |
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#)