使用不同的排序顺序对枚举字段进行排序

本文关键字:排序 枚举 字段 顺序 | 更新日期: 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>。我想根据枚举的特定顺序对列表进行排序,例如

  1. ,
  2. 防守,
  3. 进攻。

但我也想排序其他顺序,如

  1. 攻势,
  2. ,
  3. 防守。

我确实在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);