LINQ を使用してオブジェクトのリストをグループ化する
オブジェクト指向プログラミングでは、多くの場合、共有条件に従ってオブジェクトをグループ化する必要があります。これは、LINQ (統合言語クエリ) を使用して効率的に実行できます。以下では、オブジェクトのリストを複数のオブジェクト リストを含む新しいグループ化リストにグループ化する方法を検討します。
質問:
ユーザーを表すクラスを考えてみましょう:
<code class="language-csharp">public class User { public int UserID { get; set; } public string UserName { get; set; } public int GroupID { get; set; } }</code>
ユーザーのリストがあるとします:
<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>
私たちの目標は、GroupID でユーザーをグループ化し、グループごとにグループ化されたユーザーのリストを作成することです。
解決策:
LINQ は、GroupBy メソッドを使用した強力なグループ化メカニズムを提供します。次のコード スニペットは、目的のグループ化を実現する方法を示しています。
<code class="language-csharp">var groupedUserList = userList .GroupBy(u => u.GroupID) .Select(grp => grp.ToList()) .ToList();</code>コードの内訳:
IGrouping<int, User>
には、必要なグループ化、つまりユーザー リストのリストが含まれています。各内部リストは同じグループに属するユーザーを表します。 groupedUserList
以上がLINQ を使用して共有プロパティごとにオブジェクトのリストをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。