我有一个实体列表,它有一个枚举.
public class Car
{
public int CarId { get; set; }
public string CarName { get; set; }
public CarCategory CarCategory { get; set; }
}
public enum CarCategory
{
None = 0,
kLowRange = 1,
kMidRange = 2,
kHighRange = 3
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个汽车列表,我想使用Comparer并在枚举上运行它,以便所有具有CarCategory为kMidRange和kHighRange的实体将被排序到列表中的第一个.
我已经尝试了答案,但没有找到任何运气.
谢谢.
更新: 我有点犯了我正在做的错误.我在看
var sortedList = carList
.OrderBy(x => x.CarCategory,
new EnumComparer<CarCategory> {
CarCategory.kMidRange,
CarCategory.kHighRange});
Run Code Online (Sandbox Code Playgroud)
但是得到了相同的价值观.我必须添加.ToList()才能获得结果.
var sortedList = carList
.OrderBy(x => x.CarCategory,
new EnumComparer<CarCategory> {
CarCategory.kMidRange,
CarCategory.kHighRange})
.ToList();
Run Code Online (Sandbox Code Playgroud)
会给我预期的结果.我的错!
说我有这个珍贵的岩石清单:Adamantite, Diamonds, Crystal, Gold, Silver, Bronze
.
每个rock都是一个对象,它有一个名为property的属性Rarity
,它是一个基于以下任一值或这些值的字符串:Common, Precious, Rare, Mythic, Infinite
.
我想根据这些价值对我的清单进行排序,哪些Common
是最不珍贵的,Infinite
也是最珍贵的.有没有办法使用linq,我可以很容易地实现这一点,或者我是否需要为这种情况弹出一个新的方法?我也希望能够从最珍贵到最少的分类.
谢谢!