首页 >后端开发 >C++ >如何使用LINQ有效地将列表分为具有相等大小的标准列表?

如何使用LINQ有效地将列表分为具有相等大小的标准列表?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-02-01 22:31:10716浏览

How to Efficiently Split a List into Sublists of Equal Size Using LINQ?

利用LINQ将列表分割成子列表

在编程中,将列表分割成子列表是一种常见的操作。在C#中,一种高效的方法是利用LINQ(语言集成查询)的功能。让我们探讨如何使用LINQ将列表分割成大小相等的子列表。

假设您需要将一个对象列表分成大小为三的子列表。为此,我们可以使用以下代码:

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

这段代码首先将列表中的每个元素与其索引关联起来。随后,它根据索引除以三的结果对元素进行分组。此分组创建大小相等的子列表。最后,它将每个组中的值提取到一个列表的列表中。

为了举例说明这个过程,让我们假设我们有以下原始列表:

<code class="language-csharp">List<string> originalList = new List<string> { "a", "g", "e", "w", "p", "s", "q", "f", "x", "y", "i", "m", "c" };</code>

通过调用Split函数,每三个元素一组将存储在一个结果列表的列表中的单独子列表中:

<code class="language-csharp">List<List<string>> resultList = Split(originalList);</code>

resultList将包含以下子列表:

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

使用LINQ简洁高效的语法,我们演示了如何方便地将列表分割成指定大小的子列表。这种方法为各种数据操作场景提供了一种通用的解决方案。

以上是如何使用LINQ有效地将列表分为具有相等大小的标准列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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