Рендеринг похожих данных в ASP.NET путем группировки - PullRequest
1 голос
/ 14 апреля 2010

Я пытаюсь создать динамический HTML из некоторых данных из базы данных. Мои данные, возвращенные из БД:

ApplicationName       URL
------------------------------
AppName1              URL1
AppName2              URL1
AppName2              URL2
AppName1              URL2

Я хочу, чтобы все URL для одного приложения отображались под одним заголовком ApplicationName. Как:

AppName1

      URL1

      URL2

AppName2

      URL1

      URL2

Может кто-нибудь помочь мне в коде для этого?

1 Ответ

2 голосов
/ 14 апреля 2010

Ваш код, вероятно, имеет что-то вроде этого, поэтому вы можете получить доступ к элементам в вашей разметке aspx:

public Item[] DataItems { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    // get your list
    DataItems = new[]
                    {
                        new Item{ ApplicationName = "Test", Url = new Uri("http://test.com/Home")},
                        new Item{ ApplicationName = "Test", Url = new Uri("http://test.com")},
                        new Item{ ApplicationName = "Test 2", Url = new Uri("http://test2.com/Home")},
                        new Item{ ApplicationName = "Test 2", Url = new Uri("http://test2.com/")},
                    };
}

Затем в вашем aspx-файле просто добавьте linq в микс, чтобы выполнить операцию группировки:

 <ul>
<% foreach (var aggregateItem in (from item in DataItems
                                  group item by item.ApplicationName
                                  into groupedItem
                                  select new { Name = groupedItem.Key, Items = groupedItem })) %>
<% { %>

    <li><strong><%= aggregateItem.Name%></strong>
        <ul>
            <% foreach (var subItem in aggregateItem.Items) %>
            <% { %>
                <p>
                    <a href="<%= subItem.Url %>"><%= subItem.Url %></a>
                </p>
            <% } %>
        </ul>
    </li>
<% } %>
</ul>
...