我的问题是,对于较旧的系统,角色列表是乱码... 例如
ApplicationUser ID=1
MasterUser ID=2
UserRepresentative ID=3
Admin ID=4
MasterAdmin ID=5
User1 ID=6
User2 ID=7
User3 ID=8
虽然我需要列表按以下顺序排列:
MasterAdmin ID=5
Admin ID=4
MasterUser ID=2
User1 ID=6
User2 ID=7
User3 ID=8
ApplicationUser ID=1
UserRepresentative ID=3
我无法弄清楚如何在控制器中使用C#来实现这一点,我知道如何排除我不需要的内容,因为它已被拉入,但不知道如何订购它...... / p>
通常我只是在数据库中订购角色,但这是一个旧系统,有数百名不同角色的用户,这不是一种选择。
答案 0 :(得分:0)
向表中添加“Rank”列,使其现在显示为:
MasterAdmin ID=5 Rank=1
Admin ID=4 Rank=2
etc.
答案 1 :(得分:0)
最好的解决方案是在表中添加另一列并使用它来进行排序。假设您的表格中有一个名为“DisplayOrder
”的列,您可以直接执行此操作
db.Roles.OrderBy(s=>s.DisplayOrder)
如果无法将此列添加到db表,则可以执行以下操作。在列表变量中指定(硬编码)订单,并按顺序使用
var displayOrder = new List<string> { "MasterAdmin", "Admin", "MasterUser" ,
"User1","User2","User3","ApplicationUser"};
现在您可以通过
将此列表用于您的订单var result= db.Roles.OrderBy(s=>displayOrder.IndexOf(s.RoleName)).ToList();