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