在MVC .NET C中手动从DataBase中排序SelectList内容#

时间:2016-06-03 18:25:46

标签: c# asp.net-mvc

我的问题是,对于较旧的系统,角色列表是乱码... 例如

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>

通常我只是在数据库中订购角色,但这是一个旧系统,有数百名不同角色的用户,这不是一种选择。

2 个答案:

答案 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();
相关问题