Why doesn’t the Controls collection provide all of the IEnumerable methods?

No, IEnumerable doesn’t have many extension methods on it: IEnumerable<T> does. They are two separate interfaces, although IEnumerable<T> extends IEnumerable.

The normal LINQ ways of converting are to use the Cast<T>() and OfType<T>() extension methods which do extend the nongeneric interface:

IEnumerable<TextBox> textBoxes = Controls.OfType<TextBox>();
IEnumerable<Control> controls = Controls.Cast<Control>();

The difference between the two is that OfType will just skip any items which aren’t of the required type; Cast will throw an exception instead.

Once you’ve got references to the generic IEnumerable<T> type, all the rest of the LINQ methods are available.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)