使用 linq 分解列表;分成很多列表 n 长度?
我有一个列表,我想将其分成 10 组。
如果我有一个
List<Person> allPendingPersons
长度为 m 的对象。
LINQ 中是否有一种优雅的方法可以将 allPendingPersons 分解为一个或多个最多包含 10 名人员的 List 对象?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以编写自己的扩展方法:
我更深入地探索了这一点< /a> 在我的博客中。
You can write your own extension method:
I explored this in more depth in my blog.
如果您想处理
IGrouping<,>
。如果您正在寻找列表>回来你可以尝试if you want to process
IGrouping<,>
. If you are looking for List> back you could try.NET (Rx) 反应式扩展 有一个扩展方法这正是你想要的:
如果你想使用 LINQ 来做到这一点,你可以这样做:
The Reactive Extensions for .NET (Rx) has an extension method that does exactly what you want:
If you want to do it using LINQ you could do this:
这些应该有一定的帮助。
如何拆分 IEnumerable分成 IEnumerable 组
将大的 IEnumerable 分成更小的IEnumerable 固定数量的项目
我可以改进这些分页扩展方法吗?
获取 4 个元素的组在 C# 中使用 LINQ 的名称值列表
LINQ:获取最小值和最大值分为子序列的数字序列的值
LINQ 将列表分区为 8 个成员的列表
一个非常受欢迎的答案是查看 Jon Skeet 的 MoreLinq,特别是
Batch
函数,它不仅可以满足您的要求,还可以让您指定返回选择器!These should be of some assistance.
How can I split an IEnumerable<String> into groups of IEnumerable<string>
Divide a large IEnumerable into smaller IEnumerable of a fix amount of item
Can I improve these Pagination extension methods?
Get groups of 4 elements from name value list using LINQ in C#
LINQ: Get min and max values of sequence of numbers divided into subsequences
LINQ Partition List into Lists of 8 members
One very popular answer is to check out Jon Skeet's MoreLinq, in particular, the
Batch
function, which not only does what you are asking for, but also lets you specify a return selector!这不是最有效的技术,但这将产生一个
IEnumerable>
序列,每个内部序列包含十个元素:并且如果结果确实需要是一个列表-lists 而不是简单的序列,那么您可以通过添加几个
ToList
调用来创建List
:>
It's not the most efficient technique, but this will produce an
IEnumerable<IEnumerable<Person>>
sequence, with each inner sequence containing ten elements:And if the result really does need to be a list-of-lists rather than a simple sequence then you can create a
List<List<Person>>
instead by adding in a couple ofToList
calls:尝试迭代器块:
Try an iterator block:
优雅的方式 性能不是很好。这是一种更高效的方法...
The elegant way is not very performant. Here is a more performant way...