在C#中,通过字符串属性对对象列表进行排序并获得正确顺序的最佳方法是什么?

leo*_*ora 1 c# linq collections

我有一个"问题"对象列表,我想按"优先级"字段对它们进行排序.

问题是"优先级"是一个字符串名称,如"HIGH","MEDIUM",所以我没有我可以排序的ID.如何排序并告诉分拣机"HIGH"高于"MEDIUM"高于"LOW"?

Ani*_*Ani 10

显而易见的方法是:

string[] priorities = {  "LOW", "MEDIUM", "HIGH" };

var orderedIssues = issues.OrderByDescending
              (issue => Array.IndexOf(priorities, issue.Priority));
Run Code Online (Sandbox Code Playgroud)

但是考虑使用枚举:

public enum Priority
{
    Low,
    Medium,
    High
}

var orderedIssues = issues.OrderByDescending
              (issue => (Priority)Enum.Parse(typeof(Priority), issue.Priority, true));
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用枚举类型作为属性/字段本身的类型,在这种情况下,它就像以下一样简单(并且不易出错):

var orderedIssues = issues.OrderByDescending(issue => issue.Priority);
Run Code Online (Sandbox Code Playgroud)