2017-07-24 86 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