使用LINQ将列表分割成子列表
在C#中,我们经常会遇到需要将列表分割成较小块或子列表的情况。实现此目标的一种方法是利用C#中强大的LINQ(语言集成查询)扩展。
让我们考虑您提供的示例。您有一个List<T>
,并且您想要创建一个List
或List<T>[]
,使得每个生成的列表包含原始列表中一定数量(例如,3)的连续项。
要使用LINQ解决此问题,您可以利用以下代码:
<code class="language-csharp">public static List<List<T>> Split<T>(IList<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>
此代码首先根据索引除以chunkSize
的结果对源列表中的元素进行分组。这会将它们分组为大小为chunkSize
的块。然后,我们使用Select
运算符将每个组转换为值列表,并使用ToList
运算符创建一个列表的列表。
例如,如果您有一个原始列表[a, g, e, w, p, s, q, f, x, y, i, m, c]
,并且chunkSize
为3,则生成的子列表将为[a, g, e]
、[w, p, s]
、[q, f, x]
、[y, i, m]
、[c]
。生成的列表的大小由原始列表中的项目数和分组操作中指定的块大小决定。总的来说,这种基于LINQ的解决方案提供了一种有效的方法,可以根据基于索引的分隔符将列表分割成子列表。 代码已修改为接受chunkSize
参数,使其更通用。
以上是如何使用c#中的linq将列表分成特定大小的订书片?的详细内容。更多信息请关注PHP中文网其他相关文章!