リストを指定されたサイズのサブリストに分割します
この記事では、リストを指定したサイズのサブリストに分割する方法を紹介し、2 つの効率的な方法を提供します。
方法 1: 拡張メソッドを使用する
次のコードは、拡張メソッドを使用してリスト分割を実装する方法を示しています。
<code class="language-csharp">public static class ListExtensions { public static List<List<T>> ChunkBy<T>(this List<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>
使用法: リストの ChunkBy
メソッドを直接呼び出し、必要なブロック サイズをパラメーターとして渡します。たとえば、18 個の要素のリストを 5 個の要素のチャンクに分割します。
<code class="language-csharp">List<List<int>> chunks = myList.ChunkBy(5);</code>
結果は、それぞれ 5 つの要素を含む 4 つのサブリストのリストになります。
方法 2: ループを使用する
もう 1 つの方法は、単純なループを使用することです:
<code class="language-csharp">public static List<List<T>> SplitList<T>(List<T> list, int chunkSize) { List<List<T>> chunks = new List<List<T>>(); while (list.Count > 0) { List<T> chunk = new List<T>(chunkSize); for (int i = 0; i < chunkSize && list.Count > 0; i++) { chunk.Add(list[0]); list.RemoveAt(0); } chunks.Add(chunk); } return chunks; }</code>
このメソッドは、リストと必要なチャンク サイズを引数として受け取り、リストの新しいリストを作成し、入力リストが空になるまで、新しいサブリストごとに chunkSize
要素を追加しながら入力リストを反復処理します。
どちらの方法でも、リストを指定されたサイズのサブリストに効果的に分割できます。特定のニーズとコーディング スタイルに最も適した方法を選択してください。
以上がリストを定義されたサイズの小さなサブリストに効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。