根据对象的枚举属性排序列表

-1 c# xamarin xamarin.forms

我有一个实体类'Car',其中包含一个Enum属性

public enum CarType 
{ BRANDNEW 
  ALMOSTNEW 
  OLD
} 
Run Code Online (Sandbox Code Playgroud)

当我获得Car对象的列表时,我想在顶部订购全新的汽车列表,然后在底部订购几乎全新的汽车和旧车.我尝试用汽车名称订购,效果非常好

CarsList = new ObservableCollection<Car>(CarViewModel.OrderBy(item => item.Name))

但我想根据枚举类型对列表进行排序.

我尝试int为枚举类型添加值

public enum CarType 
{ BRANDNEW = 1
  ALMOSTNEW = 2
  OLD = 3
} 

CarsList = new ObservableCollection<Car>(CarViewModel.OrderBy(item => item.CarType))
Run Code Online (Sandbox Code Playgroud)

但没有奏效.

AAA*_*ddd 5

你的问题在别处,因为你的任何事情都没有看似错误OrderBy(正如这个可验证的最小例子所见)

public enum CarType
{
    BRANDNEW = 1,
    ALMOSTNEW = 2,
    OLD = 3
}

public static void Main(string[] args)
{
    var list = new List<CarType>{CarType.ALMOSTNEW, CarType.OLD, CarType.BRANDNEW};
    var asd = list.OrderBy(item => item);
    Console.WriteLine(string.Join("\n", asd));
}
Run Code Online (Sandbox Code Playgroud)

产量

BRANDNEW
ALMOSTNEW
OLD
Run Code Online (Sandbox Code Playgroud)

完整的演示在这里

导致问题的最可能原因是您没有使用查询结果重新分配或更新UI.

CarsList = new ObservableCollection<Car>(CarViewModel.OrderBy(item => item.CarType))
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式证明订单正在运行,通过查看输出窗口来检查结果

    Debug.WriteLine(string.Join("\n", CarsList ));
Run Code Online (Sandbox Code Playgroud)