ホームページ > バックエンド開発 > C++ > LINQ はオブジェクトを階層リスト構造にグループ化するにはどうすればよいですか?

LINQ はオブジェクトを階層リスト構造にグループ化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-13 11:49:44
オリジナル
496 人が閲覧しました

How Can LINQ Group Objects into a Hierarchical List Structure?

LINQ を使用してオブジェクトを階層リスト構造にグループ化する

それらを分類するプロパティを持つオブジェクトのセットがあるとします。たとえば、異なるグループに属する一連のユーザーがいると想像してください。データを効率的に整理および分析するには、グループの関連付けに基づいてユーザーをグループ化することができます。

この例では、UserUserIDUserName などの属性を持つ GroupID というクラスがあります。次のようなユーザーのリストがあるとします:

<code class="language-csharp">List<User> userList = new List<User>();
userList.Add(new User { UserID = 1, UserName = "UserOne", GroupID = 1 });
userList.Add(new User { UserID = 2, UserName = "UserTwo", GroupID = 1 });
userList.Add(new User { UserID = 3, UserName = "UserThree", GroupID = 2 });
userList.Add(new User { UserID = 4, UserName = "UserFour", GroupID = 1 });
userList.Add(new User { UserID = 5, UserName = "UserFive", GroupID = 3 });
userList.Add(new User { UserID = 6, UserName = "UserSix", GroupID = 3 });</code>
ログイン後にコピー

私たちの目標は、このリストを、同じグループに属するユーザーをグループ化する階層構造に変換することです。目的の出力は次のようになります:

<code>GroupedUserList
    UserList
        UserID = 1, UserName = "UserOne", GroupID = 1
        UserID = 2, UserName = "UserTwo", GroupID = 1
        UserID = 4, UserName = "UserFour", GroupID = 1
    UserList
        UserID = 3, UserName = "UserThree", GroupID = 2
    UserList
        UserID = 5, UserName = "UserFive", GroupID = 3
        UserID = 6, UserName = "UserSix", GroupID = 3</code>
ログイン後にコピー

LINQ の強力な集計機能を使用すると、次のコードを使用してこのグループ化を実現できます。

<code class="language-csharp">var groupedCustomerList = userList
    .GroupBy(u => u.GroupID)
    .Select(grp => grp.ToList())
    .ToList();</code>
ログイン後にコピー

GroupBy メソッドは、GroupID 属性に基づいてユーザーを分類します。これにより、各グループが一意の GroupID を表すグループのコレクションが生成されます。 Select メソッドはさらに、これらのグループをユーザーのリストに変換し、各グループ内にユーザーのリストをネストする階層構造を与えます。

この LINQ クエリを使用すると、データを意味のあるグループに効果的に整理できるため、データの分析と操作の機能が強化されます。

以上がLINQ はオブジェクトを階層リスト構造にグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート