使用LINQ将列表分割成子列表
经常需要根据分隔符将对象列表分成较小的子列表。在本例中,我们感兴趣的是使用对象索引作为分隔符来创建具有指定大小的子列表。
考虑以下示例:需要将List<someobject>
分成多个列表,每个列表按顺序包含原始列表中的三个项目。期望的输出为:
为了实现此分割,我们可以使用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(); // 将List的IEnumerable转换为List的List }</code>
首先按索引分组项目,然后将每个组转换为列表,我们有效地将原始列表分割成所需大小的子列表。此技术为使用LINQ分割列表提供了一种简洁明了的解决方案。
以上是如何使用LINQ将列表拆分为特定尺寸的子列表?的详细内容。更多信息请关注PHP中文网其他相关文章!