利用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中文网其他相关文章!