c# – 微软有没有使LINQ可以使用所有的集合?

我一直在使用LINQ一段时间(并享受它),但是当我运行.NET专门的集合(DaTarowCollection,ControlCollection)时,感觉就像我碰到一个speedbump.有没有办法使用LINQ与这些专门的控件,如果不认为微软将在下一个版本的框架中解决这个问题?还是我们离开这些非LINQ方式来迭代,还是将这些集合中的项目自己拉出LINQ的集合?

解决方法

像ControlCollection这样的集合对LINQ不起作用的原因是它们不是强类型的.没有一个元素类型LINQ不能创建强类型的方法.只要你知道类型,你可以使用Cast方法来创建一个强类型的枚举,因此与LINQ一起使用.例如
ControlCollection col = ...
var query = col.Cast<Control>().Where(x => ...);

至于微软是否会做这些实现IEnumerable< T>认.我的猜测不在这里.原因是这样做是一个突破性的变化,并可能导致代码中的预期行为.即使简单地实现IEnumerable< Control>对于ControlCollection会导致更改重载分辨率,而且几乎肯定会破坏用户应用程序.

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么