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

时间:2015-08-25 22:59:55

标签: c# list sorting enums

我有一个名为Item的类:它包含各种字段

public class Item{
 private string name;
 private enume prop;
}

他们得到了并且设定了方法。

虽然enume是一个枚举:

public enum enume{
 offensive
 defensive
 support
}

现在我得到了List<Item>。我想根据枚举的特定顺序对列表进行排序,例如

  1. 支持,
  2. 防守,
  3. 进攻。
  4. 但我也想对其他订单进行排序,例如

    1. 冒犯,
    2. 支持,
    3. 防御。
    4. 我确实在stackoverflow上阅读了很多主题,但我认为它们都没有得到2个或更多的排序顺序。我使用排序方法按名称订购商品:

      inventar.Sort((x,y) => string.Compare(x.getName(),y.getName()));

      但是我不知道如何按照不同的顺序排列枚举。

      对于错误的代码格式化抱歉,我只是不明白。

      我希望你能帮助我:)。

      /编辑,希望它有所帮助。

1 个答案:

答案 0 :(得分:3)

如果您为排序顺序创建字典,则可以使用它来从枚举顺序快速转换为排序顺序:

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);