私は次のようなクラスを持っています:
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" },
};
このリストを再配置するか、別のリストを作成して、特定の順序になるようにする必要があります。すべての管理者とそのユーザー:
- Admin1(詳細)
- User2(詳細)
- User3(詳細)
- User5(詳細)
- Admin2(詳細)
- User4(詳細)
- 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);
どうもありがとう。
注:管理者のいないユーザーと、ユーザーのない管理者が存在する可能性があります。