LINQ を使用してコレクションを `n` 個の部分に分割しますか? [重複] 質問する

LINQ を使用してコレクションを `n` 個の部分に分割しますか? [重複] 質問する

LINQ を使用してコレクションをnいくつかの部分に分割する良い方法はありますか? もちろん、必ずしも均等に分割する必要はありません。

つまり、コレクションをサブコレクションに分割し、各サブコレクションに要素のサブセットを含め、最後のコレクションを不規則にしたいのです。

ベストアンサー1

純粋な linq と最も単純なソリューションを以下に示します。

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;
    }
}

おすすめ記事