使用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中文網其他相關文章!