ホームページ >バックエンド開発 >C++ >LINQ を使用して共有プロパティごとにオブジェクトのリストをグループ化するにはどうすればよいですか?

LINQ を使用して共有プロパティごとにオブジェクトのリストをグループ化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-13 12:12:431014ブラウズ

How Can I Group a List of Objects by a Shared Property Using LINQ?

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>
コードの内訳:

  1. GroupBy: これはグループ化操作の中核です。ユーザーを GroupID でグループ化し、各グループが同じグループに属するユーザーを表すグループのリストを生成します。
  2. Select: GroupBy の出力はグループのリスト ( として示される) であるため、各グループからユーザーを選択する必要があります。 Select で ToList メソッドを使用して、各グループをユーザーのリストに変換します。 IGrouping<int, User>
  3. ToList: 最後に、ToList を使用して、ユーザー リストのリストをリストに変換します。

には、必要なグループ化、つまりユーザー リストのリストが含まれています。各内部リストは同じグループに属するユーザーを表します。 groupedUserList

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

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