我有一个通用的对象列表,例如:List<Photo>
并希望将其转换为我可以在MVC视图上使用的内容。
在表格(基本示例)中:
<% foreach (var row in PhotoList) { %>
// Render Matrix (using photo properties)
<tr>
<% foreach(photo in row) { %>
<td><%=photo.Name%></td>
<% } %>
</tr>
<% } %>
我想过使用像List<List<Photo>>()
之类的东西手动执行此操作,但使用LINQ有一种很好的方法吗?提供分页矩阵显示的列数,行数和页数,或其他更好的想法。
答案 0 :(得分:3)
您可以根据所需的列数GroupBy()
使用x
创建矩阵:
photos.Select( (photo, index) => new { Index = index, Photo = photo })
.GroupBy( n=> n.Index / x)
.Select( g => g.Select( p=> p.Photo).ToList())
.ToList();
结果是List<List<Photo>>
每个内部列表中都有x
张照片。然后你应该只能使用两个foreach循环来渲染它们(如你的例子中所示)。