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 中国語 Web サイトの他の関連記事を参照してください。