将列表分割成指定大小的子列表
本文介绍如何将列表分割成指定大小的子列表,并提供两种高效方法。
方法一:使用扩展方法
以下代码展示了如何通过扩展方法实现列表分割:
<code class="language-csharp">public static class ListExtensions { public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize) { return source .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index / chunkSize) .Select(x => x.Select(v => v.Value).ToList()) .ToList(); } }</code>
使用方法:直接调用列表的ChunkBy
方法,传入所需的块大小作为参数。例如,将包含18个元素的列表分割成5个元素的块:
<code class="language-csharp">List<List<int>> chunks = myList.ChunkBy(5);</code>
结果将得到一个包含四个子列表的列表,每个子列表包含五个元素。
方法二:使用循环
另一种方法是使用简单的循环:
<code class="language-csharp">public static List<List<T>> SplitList<T>(List<T> list, int chunkSize) { List<List<T>> chunks = new List<List<T>>(); while (list.Count > 0) { List<T> chunk = new List<T>(chunkSize); for (int i = 0; i < chunkSize && list.Count > 0; i++) { chunk.Add(list[0]); list.RemoveAt(0); } chunks.Add(chunk); } return chunks; }</code>
此方法接受列表和所需的块大小作为参数,创建一个新的列表列表,并迭代输入列表,将chunkSize
个元素添加到每个新的子列表中,直到输入列表为空。
两种方法都能有效地将列表分割成指定大小的子列表。选择最符合您特定需求和编码风格的方法。
以上是如何有效地将列表拆分为指定大小的较小子列表?的详细内容。更多信息请关注PHP中文网其他相关文章!