嵌套的Foreach循环运行次数太多 - C#

时间:2017-07-24 12:59:46

标签: c# loops foreach

我有2个foreach个循环,1个嵌套在另一个循环中。共有115个项目共有115个。我想要做的是将第一个集合中的第一个项目写入控制台,然后将第二个集合中的第一个项目写入控制台。返回第一个集合并执行第二个项目,依此类推。

我理解为什么嵌套循环一遍又一遍地运行,我只是无法弄清楚如何实现我想要实现的目标。

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 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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}");
  }
}