C# 使用linq查询ASP.NET表单对象

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

是否可以选择使用linq继承特定抽象类的所有控件

使用扩展方法:

...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:因为一旦编写了一个可重用的循环,它就为您提供了一些非常强大的过滤和处理功能。