LINQ でリストをサブリストに分割する 質問する

LINQ でリストをサブリストに分割する 質問する

アイテムインデックスを各分割の区切り文字として使用して、List<SomeObject>を の複数の個別のリストに分割する方法はありますか?SomeObject

例を挙げてみましょう:

がありList<SomeObject>、 または が必要なList<List<SomeObject>>のでList<SomeObject>[]、結果の各リストには元のリストの 3 つの項目のグループが(順番に)含まれることになります。

例えば。:

  • オリジナルリスト:[a, g, e, w, p, s, q, f, x, y, i, m, c]

  • 結果のリスト:[a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]

結果のリストのサイズもこの関数のパラメータとして必要になります。

ベストアンサー1

次のコードを試してください。

public static List<List<T>> Split<T>(IList<T> source)
{
    return  source
        .Select((x, i) => new { Index = i, Value = x })
        .GroupBy(x => x.Index / 3)
        .Select(x => x.Select(v => v.Value).ToList())
        .ToList();
}

アイデアとしては、まず要素をインデックスでグループ化します。3で割ると、3つのグループにグループ化されます。次に、各グループをリストに変換し、のをのにIEnumerable変換します。ListListList

おすすめ記事