我目前正在研究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