0

我在这样的 ASP.NET 应用程序中创建了一个菜单应用程序:

// HTML
<td runat="server" id="container">

// C#. This logic is creating
// within a LOOP
Label l = new Label("name_blabla");
Panel p = new Panel();
p.Add(l);
container.Controls.Add(p);

在给定的时刻,我将 CSS 类myclass分配给标签l

l.CssClass="myClass";

因此容器只有一个面板,其中仅包含一个myclass分配了此名称的标签。

目的是在插入所有控件后从容器中获取此面板。我不知道它插入的位置。使用 LINQ 更好。

4

1 回答 1

1

您可以使用OfType<>()过滤面板,然后应用SelectMany()将标签投影到面板内,然后使用Where()检查标签的 CSS 类:

Label theLabel
    = container.Controls.OfType<Panel>()
                        .SelectMany(panel => panel.Controls.OfType<Label>())
                        .Where(label => label.CssClass == "MyClass")
                        .FirstOrDefault();

编辑:如果你想匹配面板而不是标签,你可以使用Any()

Panel thePanel
    = container.Controls.OfType<Panel>()
                        .Where(panel => panel.Controls.OfType<Label>().Any(
                            label => label.CssClass == "MyClass"))
                        .FirstOrDefault();
于 2012-12-27T09:37:36.993 回答