1. ホーム
  2. c#

[解決済み] 配列を特定のサイズのチャンクに分割する方法は?[クローズド]

2022-02-15 16:46:09

質問

午後

私は配列をより小さなquot;チャンク;に分割する必要があります。

私は約1200のアイテムを渡しており、これらを100アイテムずつの扱いやすい配列に分割し、それを処理する必要があります。

どなたかご提案をお願いします。

解決方法は?

を使用することができます。 LINQ を使用してすべての項目をチャンクサイズでグループ化し、その後に新しい Array を作成します。

// build sample data with 1200 Strings
string[] items = Enumerable.Range(1, 1200).Select(i => "Item" + i).ToArray();
// split on groups with each 100 items
String[][] chunks = items
                    .Select((s, i) => new { Value = s, Index = i })
                    .GroupBy(x => x.Index / 100)
                    .Select(grp => grp.Select(x => x.Value).ToArray())
                    .ToArray();

for (int i = 0; i < chunks.Length; i++)
{
    foreach (var item in chunks[i])
        Console.WriteLine("chunk:{0} {1}", i, item);
}

なお、新しい配列を作成する必要はありません(CPUサイクルとメモリが必要です)。また IEnumerable<IEnumerable<String>> を省略した場合 ToArrays .

以下は実行中のコードです。 http://ideone.com/K7Hn2