2017-07-24 45 views
3

我有2个foreach循环,1个嵌套在另一个内部。共有2个系列共115件商品。我想要做的是将第一个集合中的第一个项目写入控制台,然后将第二个集合中的第一个项目写入控制台。回到第一个集合,做第二个项目等等。嵌套的Foreach循环运行次数太多 - C#

我明白为什么嵌套循环反复运行,我只是无法弄清楚如何实现我想实现的目标。

var Titles = chromeDriver.FindElements(By.CssSelector("div.contentItem__contentWrapper h1")); 
var Text = chromeDriver.FindElements(By.CssSelector("div.contentItem__contentWrapper p"));   

foreach (var title in Titles) 
{ 
    string t = title.Text; 
    Console.WriteLine($"Title: {t}"); 
    foreach (var text in Text) 
    { 
     string p = text.Text; 
     Console.WriteLine($"Article Text: {p}"); 
    } 
} 
+2

请提供一个[mcve] –

+0

什么是内部'foreach'中的'Text'? – dotNET

+0

两个集合之一? '2个系列共有115件商品'? – Charleh

回答

5

您需要知道第一个集合中的哪个项目当前正在使用中。这是最简单的使用for循环中完成。您可以然后从第二收集访问正确的项目:

for(int i = 0; i < Titles.Count; i++) 
{ 
    Console.WriteLine($"Title: {Titles[i].Text}"); 
    Console.WriteLine($"Article Text: {Text[i].Text}"); 
} 
5

你应该让一个循环,并通过两个集合迭代。

for (var x = 0; x < Math.Max(Titles.Count, Text.Count); x++) 
{ 
    if (Titles.Count > x) 
    { 
    Console.WriteLine($"Title: {Titles[x].Text}"); 
    } 
    if (Text.Count > x) 
    { 
    Console.WriteLine($"Article Text: {Text[x].Text}"); 
    } 
} 
+0

@DavidG OMG,我现在感觉很蠢!你是绝对正确的。假设它是'Min',因为它对我有意义:-D –

+0

@RomanoZumbé没问题,我们都觉得在某个时候很愚蠢! – DavidG