利用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>
),我們需要從每個群組中選擇使用者。我們在Select中使用ToList方法將每個群組轉換為使用者清單。 groupedUserList
現在包含所需的分組:一個使用者列表列表,其中每個內部列表代表屬於同一組的使用者。
以上是如何使用 LINQ 以共享屬性對物件清單進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!