我正在尝试从db中创建一些动态html。我从db返回的数据是:
ApplicationName URL ------------------------------ AppName1 URL1 AppName2 URL1 AppName2 URL2 AppName1 URL2
我希望单个应用程序的所有URL都应该在ApplicationName的一个标题下呈现。像:
AppName1 URL1 URL2 AppName2 URL1 URL2
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
你的代码可能有这样的东西,所以你可以访问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>