I've been using LINQ for awhile (and enjoy it), but it feels like I hit a speedbump when I run across .NET specialized collections(DataRowCollection, ControlCollection). Is there a way to use LINQ with these specialized controls, and if not do you think Microsoft will address this in the next release of the framework? Or are we left to iterate over these the non-LINQ way, or pull the items out of the collection into LINQ-able collections ourselves?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
The reason for this is: Collections which do not implement
IEnumerable<T>
or IQueryable, can not be iterated in LINQThe reason why collections like
ControlCollection
do not work with LINQ is that they are not strongly typed. Without an element type LINQ cannot create strongly typed methods. As long as you know the type you can use theCast
method to create a strongly typed enumeration and hence be used with LINQ. For exampleAs to will Microsoft ever make these implement
IEnumerable<T>
by default. My guess is no here. The reason why is that doing so is a breaking change and can cause expected behavior in code. Even simply implementingIEnumerable<Control>
forControlCollection
would cause changes to overload resolution that can, and almost certainly will, break user applications.You should be able to do something like this:
and use Linq that way. If you know what the objects in the collection are, then you should be able to use that.