5

我有这个查询要收集:

Panel thePanel = menuCell.Controls.OfType<Panel>()
                    .Where(panel => panel.Controls.OfType<HyperLink>().Any(
                        label => label.ID == clas))
                    .FirstOrDefault();

这仅获取具有特定 id 的超链接的面板。firstOrDefault我不仅需要获取匹配的元素(仅第一个),还需要获取序列中的下一个元素。我没有尝试任何东西,因为不知道如何。

4

2 回答 2

7

这将返回前三个面板,其中包含具有特定 id 的超链接

var thePanels = menuCell.Controls.OfType<Panel>()
                    .Where(panel => panel.Controls.OfType<HyperLink>()
                                         .Any(label => label.ID == clas))
                    .Take(3);

如果您需要第一个具有特定 id 的超链接的面板,以及接下来的两个面板,无论它们有什么:

var thePanels = menuCell.Controls.OfType<Panel>()
                        .SkipWhile(panel => !panel.Controls.OfType<HyperLink>()
                                                 .Any(label => label.ID == clas))
                        .Take(3);
于 2012-12-28T12:21:00.900 回答
1

如果要找到一个具有指定条件的面板,然后取它,然后再取两个,无论它们是否满足条件,您都可以这样做:

IEnumerable<Panel> thePanelAndTwoNext = menuCell.Controls.OfType<Panel>()
                .SkipWhile(panel => !panel.Controls.OfType<HyperLink>()
                                       .Any(label => label.ID == clas))
                .Take(3);
于 2012-12-28T12:23:56.140 回答