我有那堂课
public class MyItem
{
public Order OrderItem { get; set; }
public string Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该Status属性可以有值Error,Pending,Success
我想List<MyItem>()根据Status属性对对象进行排序.
我知道我可以代替的类型Status物业string到int,然后代替Error,Pending,Success值我可以有1,2,3然后排序操作简单.但是我想知道如果我们必须基于stringtype属性进行排序,该怎么做.
可能的顺序:
Error,Pending,Success或Success,Pending,Error
如何使用LINQ做到这一点?
我会使用一个enum而不是默认情况下给每个状态一个整数值,例如
public enum Status
{
Success,
Pending,
Error
}
var sortedList = myList.OrderBy(x => x.Status);
// sort by Success, Pending and then Error
var sortedList = myList.OrderByDescending(x => x.Status);
// sort by Error, Pending, Success
Run Code Online (Sandbox Code Playgroud)
您可以enum非常轻松地将现有字符串转换为:
var status = (Status)Enum.Parse(typeof(Status), statusString);
Run Code Online (Sandbox Code Playgroud)