1. ホーム
  2. c#

[解決済み】LINQでリストをサブリストに分割する

2022-03-24 13:15:27

質問

を分離する方法はありますか? 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]

また、この関数のパラメータとして、結果のリストサイズが必要です。

どのように解決するのですか?

以下のコードを試してみてください。

public static IList<IList<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つずつのグループになる。 IEnumerableListListList s