首頁 >後端開發 >C++ >如何使用 LINQ 以共享屬性對物件清單進行分組?

如何使用 LINQ 以共享屬性對物件清單進行分組?

Susan Sarandon
Susan Sarandon原創
2025-01-13 12:12:43970瀏覽

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的輸出是群組清單(表示為IGrouping<int, User>),我們需要從每個群組中選擇使用者。我們在Select中使用ToList方法將每個群組轉換為使用者清單。
  3. ToList: 最後,我們使用ToList將使用者清單清單轉換回一個清單。

groupedUserList現在包含所需的分組:一個使用者列表列表,其中每個內部列表代表屬於同一組的使用者。

以上是如何使用 LINQ 以共享屬性對物件清單進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn