C# 使用linq查询ASP.NET表单对象
是否可以选择使用linq继承特定抽象类的所有控件 使用扩展方法:C# 使用linq查询ASP.NET表单对象,c#,asp.net,linq,C#,Asp.net,Linq,是否可以选择使用linq继承特定抽象类的所有控件 使用扩展方法: ...Form.Controls.OfType<MyControlBase>()... …Form.Controls.OfType()。。。 要递归执行此操作,请参见:创建一个遍历控件树的迭代器,以创建一个列表,然后将LINQ运算符应用于该列表。假设您有一个递归获取所有控件的方法,如下所示: public static IEnumerable<Control> GetControls(Control f
...Form.Controls.OfType<MyControlBase>()...
…Form.Controls.OfType()。。。
要递归执行此操作,请参见:创建一个遍历控件树的迭代器,以创建一个列表,然后将LINQ运算符应用于该列表。假设您有一个递归获取所有控件的方法,如下所示:
public static IEnumerable<Control> GetControls(Control form) {
foreach (Control childControl in form.Controls) { // Recurse child controls.
foreach (Control grandChild in GetControls(childControl)) {
yield return grandChild;
}
yield return childControl;
}
}
公共静态IEnumerable GetControls(控件窗体){
foreach(form.Controls中的Control-childControl){//递归子控件。
foreach(GetControls中的控件孙子(childControl)){
收益回报孙子;
}
收益控制;
}
}
然后你可以做:
var controls = GetControls(form).OfType<SomeControlBase>();
var controls=GetControls(form).OfType();
我想我要找的控件嵌套在另一个控件中。当我尝试此操作时,它不会返回任何结果。是的,您必须递归地通过控件集合向下移动,并在移动过程中收集它们。因此,如果您必须使用循环进行迭代,为什么要使用linq?@Slim:因为一旦编写了一个可重用的循环,它就为您提供了一些非常强大的过滤和处理功能。