リストにいくつのアイテムがあるかわからないまま、リストを分割したいと思います。質問は、リストを固定サイズのチャンクに分割したい人とは異なります。
int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
値を垂直方向に分割したいのですが。
2つに分割:
-------------------
| item 1 | item 6 |
| item 2 | item 7 |
| item 3 | item 8 |
| item 4 | item 9 |
| item 5 | |
3に分割:
| item 1 | item 4 | item 7 |
| item 2 | item 5 | item 8 |
| item 3 | item 6 | item 9 |
4に分割:
| item 1 | item 4 | item 6 | item 8 |
| item 2 | item 5 | item 7 | item 9 |
| item 3 | | | |
私はそれを行うことができるいくつかのc#拡張機能を見つけましたが、それは私が望むように値を分配しません。これが私が見つけたものです:
// this technic is an horizontal distribution
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;
}
結果はこれですが、私の問題は、値が水平方向に分散されていることです。
| item 1 | item 2 |
| item 3 | item 4 |
| item 5 | item 6 |
| item 7 | item 8 |
| item 9 | |
また
| item 1 | item 2 | item 3 |
| item 4 | item 5 | item 6 |
| item 7 | item 8 | item 9 |
値を垂直方向に分散し、必要なパーツの数を選択する可能性がある方法はありますか?
実生活では
どのような状況でリストを垂直に分割したいのかを知りたい方のために、私のWebサイトのセクションのスクリーンショットを次に示します。