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)