ホームページ >バックエンド開発 >C++ >Linqを使用して、アイテムインデックスに基づいてリストをサブリストに分割するにはどうすればよいですか?

Linqを使用して、アイテムインデックスに基づいてリストをサブリストに分割するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-01 22:26:14618ブラウズ

How Can LINQ Be Used to Split a List into Sublists Based on Item Index?

LINQを使用したリストのサブリストへの分割

大量のリストがあり、それをより小さく扱いやすいサブリストに分割したいとします。LINQ(Language Integrated Query)は、これを簡単に実現できる強力なツールです。

課題:

アイテムインデックスを区切り文字として使用して、Listをいくつかの別々のSomeObjectリストに分割するにはどうすればよいですか?たとえば、13個のアイテムのリストがある場合、それぞれ3個のアイテムからなる5つのサブリストに分割したいとします。

解決策:

このタスクを実行するLINQを使用したカスタム関数を以下に示します。

<code class="language-csharp">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();
}</code>

説明:

  1. インデックスによるアイテムのグループ化:Selectメソッドは、各アイテムの値とインデックスを持つ匿名オブジェクトを作成します。次に、GroupByメソッドは、これらのオブジェクトをインデックスの3(目的のサブリストサイズ)による除算に基づいてグループ化します。
  2. グループのリストへの変換:GroupBy内のSelectメソッドは、アイテムの各グループをリストに変換します。
  3. IEnumerableからListへの変換:最後に、ToListメソッドはIEnumerable>をList>に変換します。

提供された例では、[a, g, e, w, p, s, q, f, x, y, i, m, c]は、それぞれ3つのアイテムを持つサブリスト[ [a, g, e], [w, p, s], [q, f, x], [y, i, m], [c] ]に分割されます。

以上がLinqを使用して、アイテムインデックスに基づいてリストをサブリストに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。