5

コレクションへの次のクエリがあります。

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

これは、特定の ID を持つハイパーリンクを持つ Panel のみを取得します。だけでfirstOrDefaultなく、一致した要素 (最初の要素のみ) とシーケンス内の次の 2 つを取得する必要があります。方法がわからないので、何も試しませんでした。

4

2 に答える 2

7

これにより、特定の ID を持つハイパーリンクを持つ最初の 3 つのパネルが返されます

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

特定の id を持つハイパーリンクを持つ最初のパネルと、次の 2 つのパネルが必要な場合:

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

指定された条件を持つ 1 つのパネルを見つけて、それを取得し、次の 2 つを、それらが条件を満たすかどうかに関係なく取得する場合は、次のようにすることができます。

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 に答える