微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有LINQ方式将对象的通用列表转换为相同类型的X by Y矩阵?

如何解决是否有LINQ方式将对象的通用列表转换为相同类型的X by Y矩阵?

| 我有一个通用的对象列表,例如:“ 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循环来呈现它们(如您的示例所示)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。