-2

5つの値を持つリストがあるとします。

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

私の要件は、このリスト内の値に基づいてHTMLコードを作成する必要があることです。

同じItem.Category値を一緒に書く必要があります。つまり、5つの値がitem.categoryあり、そのうちの3つが同じで、他の2つが異なる場合、3つの項目を組み合わせitem.categoryて、ヘッダーとなるようにする必要があります。そして、number、formatなどの他の値は、ヘッダー内のコンテンツになります。

次のように表示されます。

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

  }

読みづらく、理解しづらい場合はお知らせください。

4

3 に答える 3

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
}
于 2012-12-20T00:46:26.297 に答える
0

あなたの質問は少しわかりにくいですが、カテゴリに基づいてアイテムを表示し、各アイテムは適切なカテゴリの下に表示され、各カテゴリは1回だけ表示されるようにしたいと思います。

あなたはこのようなことを試すことができます:

<% 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>
    <% } %>
<% } %>    
于 2012-12-20T00:48:47.227 に答える
0

クイックプロポーザル:

リストを反復処理します<アイテム>新しいリストのアイテムごとにアイテムをテストしてコピーします<アイテム>newTest :with newTest.Add(item);

しかし、最初に、.Add();の前に。:

  1. アイテムがすでに存在する場合は、newTest-Listを調べます。はいの場合はコピーしないでください。いいえの場合はコピーしてください。

  2. 結果:newTest-Listには、個別の(doubleなしの)エントリのみが含まれます

  3. newTest-Listを繰り返し処理し、newTest-Listに基づいてhtml要素を作成します。(forまたはforeach)

于 2012-12-20T00:52:07.563 に答える