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

时间:2019-02-06 03:35:36

标签: c# xamarin xamarin.forms

我有一个实体类'Car',它具有许多属性,包括枚举

public enum CarType 
{ BRANDNEW 
  ALMOSTNEW 
  OLD
} 

当我获得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))

但是没有用。

1 个答案:

答案 0 :(得分: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));
}

输出

BRANDNEW
ALMOSTNEW
OLD

Full Demo Here

最可能引起问题的原因是,您没有使用查询结果重新分配或更新UI。

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

您可以通过以下方法证明订单有效,通过查看输出窗口查看结果

    Debug.WriteLine(string.Join("\n", CarsList ));