利用LINQ将集合划分成子集合
将一个集合分割成更小的部分是常见的编程任务。使用LINQ(语言集成查询),您可以通过一个简单的扩展方法来实现这一点。
将集合分成N个部分
扩展方法Split
接收一个集合和所需的部分数量作为输入,并返回一个IEnumerable<IEnumerable>
,表示子集合。该算法根据当前索引除以部分数量时的余数将元素分成部分。
实现:
<code class="language-csharp">static class LinqExtensions { public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts) { int i = 0; var splits = from item in list group item by i++ % parts into part select part.AsEnumerable(); return splits; } }</code>
使用方法:
Split
方法可用于任何IEnumerable
集合。例如,要将数字列表分成3部分:
<code class="language-csharp">var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var parts = numbers.Split(3);</code>
这将返回一个包含3个IEnumerable
集合的IEnumerable
,每个集合包含原始列表的一个子集:
<code>部分1:{ 1, 4, 7 } 部分2:{ 2, 5, 8 } 部分3:{ 3, 6, 9 }</code>
以上是如何使用 LINQ 将集合拆分为子集合?的详细内容。更多信息请关注PHP中文网其他相关文章!