octobre
2008
Lorsque vous avez une collection non générique, qui n’implémente donc pas l’interface IEnumerable<T>, et qui en plus contient des objets de type différents, il n’est pas possible d’utiliser la méthode d’extension Cast<T> (voir mon billet précédent « Exécuter une requête Linq sur une collection non générique« ). Alors comment faire pour exécuter une requête Linq to Objects sur une collection de type ArrayList qui contient des objets de type System.Drawing.Color et System.Drawing.Point mélangés ?
Et bien tout simplement en utilisant une autre méthode d’extension nommée OfType :
public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source); |
Si on reprend notre ArrayList contenant des objets Color et Point, il va être possible d’exécuter une requête Linq pour manipuler par exemple les objets de type Color :
static class Program
{
static void Main(string[] args)
{
System.Collections.ArrayList myArrayList = new System.Collections.ArrayList();
myArrayList.Add(System.Drawing.Color.Red);
myArrayList.Add(new System.Drawing.Point(0, 0));
myArrayList.Add(System.Drawing.Color.Green);
myArrayList.Add(new System.Drawing.Point(10, 20));
myArrayList.Add(System.Drawing.Color.Blue);
myArrayList.Add(new System.Drawing.Point(20, 30));
var query = from color in myArrayList.OfType<System.Drawing.Color>() select color;
foreach (var currentResult in query)
Console.WriteLine(currentResult.Name);
Console.Read();
}
}
|
Vous remarquerez qu’à la compilation le code est accepté et mieux encore à l’exécution, aucun plantage de l’application. On retrouve d’ailleurs bien le résultat attendu :
Red
Green
Blue
Bon à savoir, n’est-ce pas ?!
Déménagement
Next Microsoft CEO
Articles récents
- Changement d’adresse de ce blog
- Article : les nouveautés de C# 5.0
- Modèle Entity Framework généré avec SQL Server 2008 et utilisé sous SQL Server 2005
- Les photos, vidéos et cadeaux des TechDays 2011
- La première journée en ligne sur TechDays TV
- Suivez les TechDays 2011 comme si vous y étiez sur la chaîne TechDays TV
- Téléchargez le programme des conférence des TechDays 2011
- Dernier jour des TechDays = plus de chance de remporter des cadeaux sur le stand de dvp !
- Venez à notre rencontre lors des TechDays 2011
- Les flux à ne pas rater lors des TechDays 2011
- Les TechDays 2011 s’invite sur votre smartphone Windows Phone 7
- Exclu des cadeaux du concours Developpez.com lors des TechDays 2011
- Ouverture de la galerie d’images sur notre site des TechDays
- Partagez votre expérience des Microsoft TechDays
- Grand concours Microsoft “FAN des TechDays 2011” : épisode 2 !
- Mettez-vous aux couleurs des TechDays 2011 !
- Developpez.com aux TechDays 2011
- Le Challenge Azure 2010 est fini !
- Suivez la keynote de la pdc10 en direct sur internet à 18h !
- MVP Visual C# 2010 – 2011 !!!