使用foreach循环进行多次循环

时间:2014-01-10 12:20:35

标签: c# html-agility-pack

我一直在制作一个小的控制台应用程序,它将在网站上查找最畅销的产品。 我创建了两个HtmlNodeCollection变量。

        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循环中使用运算符?如果没有,有没有办法循环它们两个?感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:0)

我假设你想要经历两个相同长度的集合并配对这些项目。 Enumerable.Zip这样做:

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

请注意,如果集合未对齐,您将默默地得到错误的结果。你最好在循环之前断言一切都很好:

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