2016-01-06 32 views
-1
var productNameTags = document.DocumentNode.SelectNodes(textBox3.Text); 
       var priceTags = document.DocumentNode.SelectNodes(textBox2.Text); 
       var codeNameAndPrice = productNameTags.Zip(priceTags, (n, w) => new { productNameTags = n, priceTags = w }); 
       int counter = 1; 
       if (codeNameAndPrice != null) 
       { 
        foreach (var nw in codeNameAndPrice) 
        { 
         label1.Visible = true; 
         label1.Text += counter + ". " + nw.productNameTags.InnerHtml + " - " + nw.priceTags.InnerHtml + "\n"; 
        } 
       } 

我有這樣的代碼看起來在HTML標籤和打印出產品名稱,並從網站上的價格,並打印出像這樣使用.ZIP:Enumerable.Zip多於2個集合?

  1. 棒球 - £5.00
  2. 足球 - £10.00
  3. 玩具車 - £15.00

是否有使用不同的方法將三個或更多的變量來壓縮在一起的一個簡單的方法?

例如

  1. 棒球 - £5.00 - 1123
  2. 足球 - £10.00 - 1124
  3. 玩具車 - £15.00 - 1125

提前感謝!

+0

你可以連'Zip'命令 - 哪裏來的1123,1124,和1125從何而來? –

+0

[郵編ÑIEnumerable的的可能的複製š一起?同時在它們之間迭代?(http://stackoverflow.com/questions/3989319/zip-n-ienumerablets-together-iterate-over-them-simultaneously) –

+0

這兩個問題@RegEdit期望的結果是不同的,所以我我不知道它應該是重複的......另一方面,答案可以用來回答這個問題......所以把我的金錘放在口袋裏而不是關閉。上使用索引合併(對於相同長度的序列)的能力 –

回答

1

我不認爲你可以.ZIP(拉鍊的巴多層次?)很容易做到,但你可以動態地做到這一點:

var names = new[] { "Baseball", "Football", "Toy Car" }; 
var prices = new[] { 5.0M, 10.0M, 15.0M }; 
var ids = new[] { 1123, 1124, 1125 }; 
var products = names 
    .Select((name, index) => new { Name = name, Price = prices[index], Id = ids[index] }); 
+1

好一點。注意索引建議正常工作與陣列/列表,但是對於XML/HTML節點列出它可能會爲O(n),而不是O(1)每次訪問,從而所述索引使得總代碼爲O(n^2),而不是上)。 –

0

你可以鏈郵編調用,或者您可以編寫(或查找)與Zip類似地並行執行多個源的擴展/幫助器方法,以提供您正在尋找的功能。

你的具體情況考慮遍歷一些父節點和選擇單個子節點相對於父(假設特定項目是單一的「父」節點的所有子節點)。