100件のリストを20件単位に分割する方法はすぐに見つかるのだけど、
100件のリストを5等分する方法が見つからなかったので覚書き。
List<string> list = new List<string>(){"あああ", "いいい", "ううう" ・・・ 100個くらい};
var chunks = list.Select((value, index) => new { value, index }).GroupBy(rec => rec.index / 20).Select(rec => rec.value));
これで、chunkは20件ずつの5等分されます。
少し説明をすると
まずは
Select( (value, index) => new { value, index })
で、インデックス付きのクラスのインスタンスを作成しています。
{"あああ", 0}
{"いいい", 1}
{"ううう", 2}
・・・という感じになります。
次に
GroupBy(rec => rec.index / 20)
で、インデックス÷3の商が同じもののみでグループ化します。
最後に
Select(rec => rec.value)
で、インデックスなしの元の値を取得しています。
このソースは、100件のリストを20件ずつに分割する方法でした。
じゃあ、100件のリストを5個に分する場合は・・・
GroupBy(rec => rec.index % 5)
とすることで、インデックス÷3の余りが同じもののみでグループ化できます。