在过去的30分钟中,我一直在寻找现有的答案,以解决我认为是一个常见的问题,但对我来说,没有什么比这更好。抱歉,如果这是骗子。

我有一个对象列表。

List<Journey> journeys;


该对象具有“状态”属性-这是一个字符串。

class Journey
{
    public string Name;
    public string Status;
}


我想基于此字符串进行排序,但不是按字母顺序排序。状态描述对象在旅途中的位置,即“途中”,“完成”或“错误”。当升序排序时,我希望它们以以下顺序出现:“错误”,“途中”,“完成”。 (实际上,状态不止于此,因此不能将它们重命名为按字母顺序排列)

除了使用值和排序顺序属性为“状态”创建类,然后基于该类进行排序之外,我该怎么做?还是那是最好的方法?

最佳答案

您可以在提供给Comparison委托的自定义函数中定义您的排序逻辑:

List<Journey> list = new List<Journey>();

list.Sort(new Comparison<Journey>((Journey source, Journey compare) =>
{
    // here is my custom compare logic
    return // -1, 0 or 1
}));

10-04 15:19