使用Linq將對(duì)象列表分組到對(duì)象列表的新分組列表中我不知道Linq是否可能這樣做但是這里......我有一個(gè)對(duì)象:public class User{
public int UserID { get; set; }
public string UserName { get; set; }
public int GroupID { get; set; }}我返回一個(gè)可能如下所示的列表: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 } );我希望能夠在上面的列表上運(yùn)行Linq查詢,該查詢按GroupID對(duì)所有用戶進(jìn)行分組。因此輸出將是包含用戶的用戶列表列表(如果這有意義?)。就像是: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我嘗試過使用groupby linq子句,但這似乎返回了一個(gè)鍵列表,并且沒有正確分組:var groupedCustomerList = userList.GroupBy( u => u.GroupID ).ToList();
3 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
var groupedCustomerList = userList .GroupBy(u => u.GroupID) .Select(grp => grp.ToList()) .ToList();

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的組聲明將按組ID分組。例如,如果你然后寫:
foreach (var group in groupedCustomerList){ Console.WriteLine("Group {0}", group.Key); foreach (var user in group) { Console.WriteLine(" {0}", user.UserName); }}
應(yīng)該工作正常。每個(gè)組都有一個(gè)鍵,但也包含IGrouping<TKey, TElement>
一個(gè)集合,允許您迭代組的成員。正如李提到的那樣,如果你真的想要,你可以將每個(gè)組轉(zhuǎn)換成一個(gè)列表,但是如果你只是按照上面的代碼迭代它們,那么這樣做沒有任何實(shí)際好處。
- 3 回答
- 0 關(guān)注
- 507 瀏覽
添加回答
舉報(bào)
0/150
提交
取消