2012-12-20 224 views
-2

假設我有一個包含5個值的列表。循環遍歷C中的列表#

List<Item> Test 
Test[0] 
{Item.category,Item.Number,Item.Format,Item.Order} etc 

我的要求是我必須根據此列表中的值編寫一些HTML代碼。

它應該被寫入的方式是應該將相同的Item.Category值寫在一起,這意味着如果item.category有5個值,其中3個是相同的,另外2個是不同的,那麼這3個項目應該組合,這意味着item.category將被稱爲標題和像數字,格式等其他值將是標題內的內容。如果我已難以閱讀和理解,請讓我知道

<h1>Item.category(the 3 same categories should appear here just one)</h1> 
{ 
    all other elements * 3 times 

    } 

應該顯示類似。

+2

你試過了什麼?就目前而言,你只是要求我們爲你做你的工作。 –

+0

您能否提供一些真實的代碼而不是僞代碼 –

回答

0

你問題有點難以理解,但我猜你想要根據類別顯示項目,每個項目出現在其適當的類別下,每個類別只顯示一次。

你可以嘗試這樣的事:

<% foreach(var g in Test.GroupBy(i => i.category)) { %> 
    <h1><%= g.Key %></h1> 
    <ul> 
    <% foreach(var i in g) { %> 
     <li><%= String.Format("Number: {0}, Format: {1}, Order: {2}", 
           i.Number, 
           i.Format, 
           i.Order) %></li> 
    <% } %> 
<% } %>  
+0

完美..謝謝 – user505210

0

首先排序的類別列表:

Test.Sort((x, y) => x.Category.CompareTo(y.Category)); 

當您通過項目循環,跟蹤當前類的,寫出來一個頭,如果它的變化:

string category = null; 
foreach (Item item in Test) { 
    if (category != item.Category) { 
    category == item.Category; 
    %><h1><%: item.Category %></h1><% 
    } 
    // output item here 
} 
0

快速的建議:

迭代通過列表<項目>測試和複製項目每個項目在新列表<項目> newTest :用newTest.Add(item);

但首先在.Add();之前。 :

  1. 如果項目已經存在,請在newTest-List中查看。如果是的話,不要複製,如果不是,複製!

  2. 結果是:newTest名錄只包含不​​同(無雙)通過newTest表目錄

  3. 迭代和newTest名錄您的HTML元素的基礎上創造! (for或foreach)