是否有一种LINQ方法可以将对象的泛型列表转换为相同类型的X × Y矩阵?
本文关键字:转换 列表 泛型 矩阵 同类型 对象 一种 LINQ 方法 是否 | 更新日期: 2023-09-27 17:50:19
我有一个对象的通用列表,例如: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?提供列数、行数和页数的分页矩阵显示,或其他更好的想法。
您可以使用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循环来呈现它们(如您的示例所示)。