我目前正在研究ASP.NET MVC 4.5中的應用程序。我需要編寫一個LINQ查詢來按不同的StatusIds列出項目列表。C#LINQ OrderBy幾個子句
給出的項目與此視圖模型的列表:
public class ProjectVm
{
public int ProjectId { get; set; }
public string Title { get; set; }
public Status StatusId { get; set; }
}
我的項目狀態枚舉:
public enum Status : byte
{
Draft = 1,
Pending = 2,
Validated = 3,
Refused = 4
}
的想法是把List<ProjectVm>
按照一定的順序,因此先通過有序1草稿,第二個由2待定,第三個由4由3驗證拒絕和第四位。
我當前的查詢看起來是這樣的:
projects = projects.OrderBy(x => x.StatusId).ToList();
不幸的是這查詢不尊重所需的順序(4配備3之前)。
你知道如何在這個查詢中應用一個條件來使項目進入正確的順序(1,2,4,3)嗎?
謝謝!
x =>((Status)x.StatusId).ToString()) –
@下面答案中的Compufreak的比較器實現是恕我直言,它是最好的,最可重用和最可持續的方式。 – JuanR