如何根据枚举值的顺序对列表对象进行排序

时间:2018-03-11 08:25:59

标签: c# enums

我有一个枚举:

public enum EnumProductConfig
{
    Color,
    Fold,
    Edge,
    Hem,
    Lift,
    Tapes,
    Control,
    Clips,    
    Pull,
    Val
}

枚举中上述值的顺序不是alphabatical,这对我来说完全没问题。

现在,我有一个列表,其中包含一个EnumProductConfig类型的属性。我想按照Enum中出现的顺序,根据该属性(是枚举类型)对列表进行排序。我不想按字母顺序排序。订单必须保持在我的枚举中。因此,具有值Color的所有行必须首先出现。其次是Fold等。

请告知。

2 个答案:

答案 0 :(得分:0)

在c#中,enum是一组数值常量。 如果未指定,则枚举的基础类型为int

  

每个枚举类型都有一个基础类型,除了char之外,它可以是任何整数类型。枚举元素的默认基础类型是int

每个枚举成员都会获得从0n的值,其中n是成员数-1:

  

默认情况下,第一个枚举数的值为0,每个连续枚举数的值增加1.

由于您既未指定基础类型也未指定值,因此您的枚举等同于:

public enum EnumProductConfig : int
{
    Color = 0,
    Fold = 1,
    Edge = 2,
    Hem = 3,
    Lift = 4,
    Tapes = 5,
    Control = 6,
    Clips = 7,    
    Pull = 8,
    Val = 9
}

这意味着您只需通过EnumProductConfig媒体资源订购:

var list = new List<MyClass>()
var sorted = list.OrderBy(c => c.ProductConfig);

You can see a live demo on rextester.

答案 1 :(得分:0)

myData.OrderBy(d => (int)d.ProductConfig).ToList();

应该这样做。导入System.Linq

无论如何,枚举真的只是int,从零开始增加1.如果你愿意,你也可以给每个值一个特定的int值。

此外,您不应在枚举类型前加上单词enum,因为它与Microsoft命名准则不符。