首页 >后端开发 >C++ >如何使用 LINQ 将集合拆分为子集合?

如何使用 LINQ 将集合拆分为子集合?

Linda Hamilton
Linda Hamilton原创
2025-01-20 04:01:09819浏览

How Can I Split a Collection into Sub-Collections Using LINQ?

利用LINQ将集合划分成子集合

将一个集合分割成更小的部分是常见的编程任务。使用LINQ(语言集成查询),您可以通过一个简单的扩展方法来实现这一点。

将集合分成N个部分

扩展方法Split接收一个集合和所需的部分数量作为输入,并返回一个IEnumerable<IEnumerable>,表示子集合。该算法根据当前索引除以部分数量时的余数将元素分成部分。

实现:

<code class="language-csharp">static class LinqExtensions
{
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
    {
        int i = 0;
        var splits = from item in list
                     group item by i++ % parts into part
                     select part.AsEnumerable();
        return splits;
    }
}</code>

使用方法:

Split方法可用于任何IEnumerable集合。例如,要将数字列表分成3部分:

<code class="language-csharp">var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var parts = numbers.Split(3);</code>

这将返回一个包含3个IEnumerable集合的IEnumerable,每个集合包含原始列表的一个子集:

<code>部分1:{ 1, 4, 7 }
部分2:{ 2, 5, 8 }
部分3:{ 3, 6, 9 }</code>

以上是如何使用 LINQ 将集合拆分为子集合?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn