问题描述
|
我有一个通用的对象列表,例如:“ 0”,并希望将其转换为我可以在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是否有一种巧妙的方法?提供列矩阵显示的列数,行数和页数,或其他更好的主意。
解决方法
给定所需的列数
x
,您可以使用GroupBy()
创建矩阵:
photos.Select( (photo,index) => new { Index = index,Photo = photo })
.GroupBy( n=> n.Index / x)
.Select( g => g.Select( p=> p.Photo).ToList())
.ToList();
结果是每个内部列表中有x
张照片的List<List<Photo>>
。然后,您应该只能够使用两个foreach循环来呈现它们(如您的示例所示)。