如何解决是否有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 举报,一经查实,本站将立刻删除。