微软是否会让所有系列都可以被LINQ使用?

Ble*_*ahu 9 c# linq collections datarowcollection controlcollection

我已经使用LINQ一段时间了(并且喜欢它),但是当我遇到.NET专用集合(DataRowCollection,ControlCollection)时,感觉就像我遇到了一个speedbump.有没有办法将LINQ与这些专用控件一起使用,如果不是,您认为Microsoft会在下一版本的框架中解决这个问题吗?或者我们是否继续迭代这些非LINQ方式,或者将项目从集合中拉出到LINQ-able系列中?

Jar*_*Par 22

集合之所以ControlCollection不能与LINQ一起使用,是因为它们不是强类型的.如果没有元素类型,LINQ无法创建强类型方法.只要您知道类型,就可以使用该Cast方法创建强类型枚举,从而与LINQ一起使用.例如

ControlCollection col = ...
var query = col.Cast<Control>().Where(x => ...);
Run Code Online (Sandbox Code Playgroud)

至于微软是否会IEnumerable<T>默认使用这些工具.我的猜测不在这里.之所以这样做是一个突破性的变化,可能导致代码中的预期行为.即使简单地实现IEnumerable<Control>ControlCollection将导致更改过载能,并几乎肯定会,打破用户的应用解决方案.