C#排序自定义类列表

Ton*_*ony 0 c# sorting

我有那堂课

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物业stringint,然后代替Error,Pending,Success值我可以有1,2,3然后排序操作简单.但是我想知道如果我们必须基于stringtype属性进行排序,该怎么做.

可能的顺序:

Error,Pending,SuccessSuccess,Pending,Error

如何使用LINQ做到这一点?

Jam*_*mes 5

我会使用一个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)