LINQ を使用してオブジェクトを階層リスト構造にグループ化する
それらを分類するプロパティを持つオブジェクトのセットがあるとします。たとえば、異なるグループに属する一連のユーザーがいると想像してください。データを効率的に整理および分析するには、グループの関連付けに基づいてユーザーをグループ化することができます。
この例では、User
、UserID
、UserName
などの属性を持つ 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 サイトの他の関連記事を参照してください。