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

前端之家收集整理的这篇文章主要介绍了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会导致更改重载分辨率,而且几乎肯定会破坏用户应用程序.

原文链接:https://www.f2er.com/csharp/96089.html

猜你在找的C#相关文章