I have a list of "Issue" objects and i want to sort them by the "Priority" field.
The issue is that "Priority" is a string name like "HIGH", "MEDIUM" so i don't have an Id that i can sort by. How do I sort and tell the sorter that "HIGH" is higher than "MEDIUM" which is higher than "LOW" ?
The obvious way would be:
string[] priorities = { "LOW", "MEDIUM", "HIGH" };
var orderedIssues = issues.OrderByDescending
(issue => Array.IndexOf(priorities, issue.Priority));
But consider using an enumeration:
public enum Priority
{
Low,
Medium,
High
}
var orderedIssues = issues.OrderByDescending
(issue => (Priority)Enum.Parse(typeof(Priority), issue.Priority, true));
Even better would be using the enumeration type as the type of the property / field itself, in which case it's as simple (and less prone to error) as:
var orderedIssues = issues.OrderByDescending(issue => issue.Priority);