Ich arbeite derzeit an einer Anwendung in ASP.NET MVC 4.5. Ich muss eine LINQ-Abfrage schreiben, um eine Liste von Projekten nach verschiedenen Status-IDs zu sortieren.C# LINQ OrderBy mehrere Klauseln
Gegeben ist eine Liste der Projekte, die mit diesem Ansichtsmodell:
public class ProjectVm
{
public int ProjectId { get; set; }
public string Title { get; set; }
public Status StatusId { get; set; }
}
Mein Enum Projektstatus:
public enum Status : byte
{
Draft = 1,
Pending = 2,
Validated = 3,
Refused = 4
}
Die Idee ist es, die List<ProjectVm>
in einer bestimmten Reihenfolge zu bringen, so dass durch ersten bestellt 1 Entwurf, zweite von 2 Pending, dritte von 4 abgelehnt und vierte von 3 Validiert.
Meine aktuelle Abfrage sieht wie folgt aus:
projects = projects.OrderBy(x => x.StatusId).ToList();
Leider ist diese Abfrage nicht die gewünschte Reihenfolge nicht einhält (4 kommt vor 3).
Wissen Sie, wie Sie eine Bedingung auf diese Abfrage anwenden, um die Projekte in die richtige Reihenfolge zu bringen (1, 2, 4, 3)?
Danke!
x => ((Status) x.StatusId) .ToString()) –
@ Compufreaks Comparer-Implementierung in den Antworten unten ist IMHO die beste und wiederverwendbarste und wartungsfreundlichste Methode. – JuanR