是否有一种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?提供列数、行数和页数的分页矩阵显示,或其他更好的想法。

是否有一种LINQ方法可以将对象的泛型列表转换为相同类型的X × Y矩阵?

您可以使用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循环来呈现它们(如您的示例所示)。

相关文章: