2014-01-10 201 views
0

我一直在製作一個小控制檯應用程序,它將查找網站上最暢銷的商品。 我已經創建了兩個HtmlNodeCollection變量。使用多個foreach循環

 public void setup() 
     { 
     try 
     { 
      HtmlDocument doc = _web.Load(_url); 
      Console.WriteLine("beginning " + _url); 

      HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//*[@id='b7907c3f23606bda85d1bf4da658198da2d954d3-carousel']/div/div/div/div/div/div/h5/a"); 
      HtmlNodeCollection price = doc.DocumentNode.SelectNodes("//*[@class='price-info']/p"); 
      if (node != null) 
      { 
       foreach (var item in node) 
       { 
        Console.WriteLine(item.InnerText); 
       } 
      } 
      Console.ReadLine(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("There has been and exception thrown in setup " + e); 
     } 
    } 

foreach循環工作正常,但我不知道如何通過價格循環。是否有可能在foreach循環中使用運算符?如果沒有,有兩種方法可以循環使用它們嗎?感謝您的任何幫助,您可以提供

+0

你能展示一個XML的例子嗎?這可能是一個更簡單的方法。 – James

回答

0

我假設你想要通過兩個相同長度的集合並配對項目。 Enumerable.Zip確實認爲:

nodes.Zip(prices, (n, p) => new { n, p }); 

要知道,你會悄悄地得到錯誤的結果,如果集合不對齊。你最好在循環之前聲明一切都很好:

Debug.Assert(nodes.Count == prices.Count);