Mel*_*sus 2 asp.net controlcollection c#-3.0
我怎么才能得到ControlCollection中的texbox?
我尝试:
public static IEnumerable<TextBox> TextBoxes(this ControlCollection controlCollection)
{
return (IEnumerable<TextBox>)controlCollection.Cast<Control>().Where(c => c is TextBox);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:无法将'WhereEnumerableIterator`1 [System.Web.UI.Control]'类型的对象强制转换为'System.Collections.Generic.IEnumerable`1 [System.Web.UI.WebControls.TextBox] ".
我用C#使用Asp.Net 3.5
Rex*_*x M 11
你实际上并不需要一个新的扩展方法 - 已经有一个适合你的方法:
controlCollection.OfType<TextBox>();
Run Code Online (Sandbox Code Playgroud)
该OfType方法返回序列(IEnumerable<T>提供的序列的)子集.如果类型不可兑换,则省略.与大多数LINQ扩展方法不同,OfType可用于非强类型的序列:
此方法是可以应用于具有非参数化类型的集合(例如ArrayList)的少数标准查询运算符方法之一.这是因为OfType <(Of <(TResult>)>)扩展了IEnumerable类型.
或者如果你想将它包装在扩展方法中,它当然很简单:
public static IEnumerable<TextBox> TextBoxes(this ControlCollection controls)
{
return controls.OfType<TextBox>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5865 次 |
| 最近记录: |