【发布时间】:2012-11-07 18:17:38
【问题描述】:
我有一个看起来像这样的类:
class UserProfile { public int Id; public int? ParentId; public string Name; public string Role; }
每个 UserProfile 都是用户或管理员。每个用户可能是单个管理员的孩子,其 Id 存储在用户的 ParentId 中。下面是一个例子:
IEnumerable<UserProfile> users = new List<UserProfile>{
new UserProfile(){Id = 1, ParentId = null, Name = "Admin1", Role = "Admin" },
new UserProfile(){Id = 2, ParentId = 1, Name = "User2", Role = "Admin" },
new UserProfile(){Id = 3, ParentId = 1, Name = "User3", Role = "Admin" },
new UserProfile(){Id = 3, ParentId = null, Name = "Admin2", Role = "Admin" },
new UserProfile(){Id = 4, ParentId = 3, Name = "User4", Role = "Admin" },
new UserProfile(){Id = 5, ParentId = null, Name = "User5", Role = "Admin" },
new UserProfile(){Id = 6, ParentId = 3, Name = "User6", Role = "Admin" },
};
我需要重新排列此列表或创建另一个列表,以便按特定顺序排列: 所有管理员及其用户:
- 管理员1(详细信息)
- 用户 2(详细信息)
- User3(详细信息)
- User5(详细信息)
- Admin2(详细信息)
- 用户 4(完整详细信息)
- User6(详细信息)
我尝试先将它们分开,但我不知道如何按所需的顺序合并它们。
var adminsOnly = users.Where(p => p.Role.Equals("Admin")).OrderBy(p => p.Id);
var usersOnly = users.Where(p => p.Role.Equals("User")).OrderBy(p => p.Id);
非常感谢。
注意:可以有没有管理员的用户,也可以有没有用户的管理员。
【问题讨论】:
-
所以您只想将它们排序在一个列表中,以便顺序为:A1、U2、U3、U5、A2、U4、U6?
-
是的,最后我需要按特定顺序获取相同类型的 IEnumerable
列表。
标签: c# linq collections lambda