2016-06-03 5 views
0

Mein Problem ist, mit einem älteren System der Liste der Rollen verstümmelt, dass ist ... Für Beispielmanuell die Inhalte von Select DataBase in MVC .NET C# Bestellung

ApplicationUser  ID=1 
MasterUser   ID=2 
UserRepresentative ID=3 
Admin    ID=4 
MasterAdmin   ID=5 
User1    ID=6 
User2    ID=7 
User3    ID=8 

Während ich die Liste achten muss die folgende Reihenfolge:

MasterAdmin  ID=5 
Admin    ID=4 
MasterUser   ID=2 
User1    ID=6 
User2    ID=7 
User3    ID=8 
ApplicationUser ID=1 
UserRepresentative ID=3 

ich nicht herausfinden kann, wie dies in der Steuerung mit C# zu tun, weiß ich, wie ausschließen, was ich nicht brauche, wie es in Mitleidenschaft gezogen wird, aber nicht wissen, wie man bestellen Sie es so ...

Normalerweise würde ich nur die Rollen in der Datenbank bestellen, aber dies ist ein älteres System mit Hunderten von Benutzern in verschiedenen Rollen, das ist keine Option.

+0

ohne irgendeine Art von Feld den Code Art zu haben, an (zB mit der Erweiterung .OrderBy() von LINQ), müssen Sie sie nur manuell in die richtige Reihenfolge bringen. Können Sie ein SortOrder-Feld in die Datenbanktabelle einfügen? – Spivonious

+0

Das ist, was ich und mein Vorgesetzter gerade diskutiert haben, wahrscheinlich, was passieren wird. Danke für die Eingabe! – Spencer

Antwort

0

Die beste Lösung ist eine andere Spalte zu Ihrer Tabelle hinzuzufügen, und dass die Art zu tun, zu verwenden. Angenommen, Ihre Tabelle hat eine Spalte namens „DisplayOrder“, können Sie einfach das tun

db.Roles.OrderBy(s=>s.DisplayOrder) 

Wenn Sie diese Spalte der Tabelle db nicht hinzufügen können, können Sie etwas tun. Geben Sie (Festcode) die Reihenfolge in einer Liste Variable und verwenden, die für die Bestellung von

var displayOrder = new List<string> { "MasterAdmin", "Admin", "MasterUser" , 
               "User1","User2","User3","ApplicationUser"}; 

Jetzt können Sie diese Liste für Ihre Bestellung nutzen, indem

var result= db.Roles.OrderBy(s=>displayOrder.IndexOf(s.RoleName)).ToList(); 
0

einen ‚Rang‘ Spalte der Tabelle hinzufügen, so dass es jetzt heißt es:

MasterAdmin ID=5 Rank=1 
Admin  ID=4 Rank=2 
etc. 
Verwandte Themen