使用不同的排序顺序对枚举字段进行排序
本文关键字:排序 枚举 字段 顺序 | 更新日期: 2023-09-27 18:09:45
我有一个名为Item:的类,其中包含各种字段
public class Item{
private string name;
private enume prop;
}
他们有get和set方法。
而enume是enum:
public enum enume{
offensive
defensive
support
}
现在我得到了一个List<Item>
。我想根据枚举的特定顺序对列表进行排序,例如
- ,
- 防守,
- 进攻。
但我也想排序其他顺序,如
- 攻势,
- ,
- 防守。
我确实在stackoverflow上读了很多主题,但我认为他们中没有一个有2个或更多的排序顺序。我使用Sort-Method:
按名称对项目排序 inventar.Sort((x,y) => string.Compare(x.getName(),y.getName()));
但是我不知道如何按不同顺序的枚举进行排序。
对不起,我的代码格式不好,我只是不明白。
我希望你能帮助我:)
如果为排序顺序创建一个字典,则可以使用它从enum快速转换为排序顺序:
Dictionary<enume, int> sort = new Dictionary<enume, int>();
sort.Add(enume.support, 0);
sort.Add(enume.defensive, 1);
sort.Add(enume.offensive, 2);
现在对转换进行排序:
List<Item> result = items.OrderBy(i => sort[i.enume]).ToList();
要以不同的方式对枚举值排序,只需将值以不同的数字放入字典中:
sort.Add(enume.offensive, 0);
sort.Add(enume.support, 1);
sort.Add(enume.defensive, 2);