如何通过C#中的枚举索引对枚举列表进行排序?

时间:2016-07-19 10:50:00

标签: c# list enums

我有enum

public enum Group
{
    Administration = 1,
    Lawyers,
    PropertyManagement
    Bookkeeping,
    Secretariat
}

我还有List GroupList<Group>。我需要一种简单的方法来通过枚举索引对列表的值进行排序。

所以,例如,这个列表:

{ Group.Bookkeeping, Group.Administration, Group.Secretariat, Group.Administration }

将成为:

{ Group.Administration, Group.Administration, Group.Bookkeeping, Group.Secretariat }

(管理第一,簿记第二,秘书处最后,像枚举的定义)。我正在寻找一种简单的方法(可能使用linq),而不需要手动循环。

3 个答案:

答案 0 :(得分:4)

默认情况下,

Array.Sort()使用基础类型来比较元素:

List<Group> groups = new List<Group>()
{
    Group.Bookkeeping, Group.Administration, Group.Secretariat, Group.Administration
};

groups.Sort();

答案 1 :(得分:0)

枚举基本上是一个整数类型,其成员从0开始编号,默认递增1。鉴于您提供了一个起始索引,即Administration = 1,您的枚举编号如下:

Administration = 1
Lawyers = 2
PropertyManagement = 3
Bookkeeping = 4
Secretariat = 5

因此,您可以使用集合的默认排序进行排序,如Sorting a List<int>中所述。

答案 2 :(得分:0)

您可以使用Linqs DoubleProperty propertyToShow = ... Label label = new Label(); label.textProperty().bind(propertyToShow.asString());

import os

def size():
    d_path = '/home/Jake/Documents/sizes'
    x = []
    p=[]
    for i in range(0,84):
        x.append('size_{:02}'.format(i))
        p.append(os.path.join(d_path,x[i]))
    return p

print size()