首页 >后端开发 >C++ >LINQ如何有效地将列表分为指定尺寸的订订列表?

LINQ如何有效地将列表分为指定尺寸的订订列表?

Susan Sarandon
Susan Sarandon原创
2025-02-01 22:36:13735浏览

How Can LINQ Efficiently Split a List into Sublists of a Specified Size?

利用LINQ高效分割列表

LINQ为.NET应用程序提供了一种简洁而强大的数据处理方式,其中包括根据各种条件将列表分割成子列表的功能。

考虑以下问题:您有一个List<T>,需要将其分割成若干个T对象的子列表,每个子列表的大小由索引决定。例如,原始列表包含以下元素:

<code>[a, g, e, w, p, s, q, f, x, y, i, m, c]</code>

您希望得到的子列表为:

<code>[a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]</code>

子列表的大小可以作为函数参数指定。

一种使用LINQ的解决方案如下:

<code class="language-csharp">public static List<List<T>> Split<T>(IList<T> source, int sublistSize)
{
    return source
        .Select((x, i) => new { Index = i, Value = x })
        .GroupBy(x => x.Index / sublistSize)
        .Select(x => x.Select(v => v.Value).ToList())
        .ToList();
}</code>

此代码执行以下步骤:

  1. 按索引分组: GroupBy方法按元素索引对源列表中的元素进行分组,每个组代表一个不同的子列表。 sublistSize 参数控制子列表大小。
  2. 选择子列表: Select方法用于将每个组中的值提取到一个新的列表中。
  3. 转换为子列表列表: 然后使用ToList将组转换为列表的列表。

结果是一个List,其中每个子列表包含来自原始列表的指定数量的元素,并根据项目索引进行分割。 通过传入 sublistSize 参数,可以灵活控制子列表的大小。

以上是LINQ如何有效地将列表分为指定尺寸的订订列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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