J'utilise Linq pendant un certain temps (et j'en profite), mais on a l'impression que je frappe un speedbump lorsque je rencontre des collections spécialisées .NET (DatarswCollection, ControlCollection). Existe-t-il un moyen d'utiliser LINQ avec ces commandes spécialisées et, si non, pensez-vous que Microsoft traitera de cela dans la prochaine version du cadre? Ou sommes-nous laissés à itérer sur ces voies non-Linq, ou tirez les articles de la collection en collections Linq-ACTABLE, nous-mêmes? P>
3 Réponses :
La raison pour laquelle les collections comme ControlCollection CODE> ne fonctionnent pas avec Linq sont qu'ils ne sont pas fortement typés. Sans un type d'élément LINQ ne peut pas créer de méthodes fortement dactylographiées. Tant que vous connaissez le type, vous pouvez utiliser la méthode
couler code> pour créer une énumération fortement dactylographiée et être utilisée avec Linq. Par exemple
ControlCollection col = ...
var query = col.Cast<Control>().Where(x => ...);
C'est la réponse. Oublié de casser. Microsoft pourrait toujours ajouter des collections fortement de type pour contrôler et telle. Merci et merci à tous ceux qui ont contribué.
Pourquoi même Microsoft n'a-t-il pas apporté la commande en tant que collection fortement dactylographiée (de contrôle de type)?
La raison en est que: les collections qui ne mettent pas implémenter iEnumerable
Eh bien, toutes les collections implémentent iEnumérables (sinon, vous ne seriez pas en mesure de les boucler). Mais pour pouvoir être utilisé par Linq, ils devront mettre en œuvre la version générique (iEnumerable
J'ai mentionné la version générique d'Ienumerable, mais SOF (éditeur de texte) ne me laissera pas le faire. Ne l'a pas remarqué tôt, ont fait la correction. Merci quand même
Vous devriez être capable de faire quelque chose comme ceci: et utilisez Linq de cette façon. Si vous savez quels sont les objets de la collection, vous devriez pouvoir utiliser cela. P> p>