アイテムインデックスを各分割の区切り文字として使用して、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
変換します。List
List
List