octobre
2008
Il est à priori possible d’interroger n’importe quel type de collections à condition qu’elle implémente l’interface IEnumerable<T>, ce qui n’est pas le cas des collections non génériques, tel que "System.Collections.ArrayList". Il semblerait donc qu’il ne soit pas possible d’exécuter une requête Linq to Objects sur une collection de type ArrayList et pourtant, il y a une astuce.
Tout d’abord, il faut bien comprendre que Linq to Objects repose sur l’interface IEnumerable<T> car c’est grâce à cette interface que le compilateur va pouvoir déterminer le type d’objet contenu dans une collection. Or avec une collection de type ArrayList, il n’est pas possible de déterminer le type des objets contenus dans la collection. Pour résoudre ce problème, Microsoft a introduit une méthode d’extension appelée "Cast".
public static IEnumerable<T> Cast<T>(this IEnumerable source); |
Comme vous pouvez le constater en regardant la définition de cette méthode, elle prend en paramètre une collection qui implémente l’interface IEnumerable et renvoie un objet de type IEnumerable<T>. Cette méthode est évidemment générique pour que vous puissiez spécifier explicitement le type d’objet contenu dans votre collection.
Si on considère que nous avons un ArrayList contenant des objets de type Process, nous allons pouvoir écrire le code suivant :
System.Collections.ArrayList myArrayList = new System.Collections.ArrayList(); // Ajout d’instances de type Process dans notre ArrayList var query = from process in myArrayList.Cast<System.Diagnostics.Process>() |
3 Commentaires + Ajouter un commentaire
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 !!!
Merci Antoine
Je vais en profiter pour remonter ton erreur auprès de notre responsable blogs.
Oups…
Je disais « Très bon tip » !
J’en profite pour signaler qu’il y a un problème d’écriture / lecture des commentaires sous IE8.
Très bon tip !Très bo