在排序字符串列表时,我可以对Enum列表进行排序吗?

时间:2013-07-22 03:24:46

标签: c# sorting enums switch-statement

如果我有一个Enum列表,例如

public enum Color
{
   Red,
   Blue,
   Yellow,
   Green,
   Black
}

我有一个列表List<Color> testList;

例如,在我的testList中,我有红色,黄色和黑色

我可以对testList进行排序,因此我使用sort()作为字符串列表时会得到黑色,红色和黄色吗?

如果我想使用switch语句,是否有任何性能考虑我切换字符串或枚举?哪一个更快?

由于

3 个答案:

答案 0 :(得分:4)

您可以这样订购:

public enum Color { Red, Blue, Yellow, Green, Black }

Enum.GetValues(typeof(Color))
    .OfType<Color>()
    .OrderBy(x => x.ToString());

结果:

enum sorting

注意:我故意遗漏了有关性能问题的任何细节。switch中不存在任何明显的性能问题..所以不要担心:)

答案 1 :(得分:0)

您可以通过此方式对列表的值进行排序。

List<string> testList = new List<string>(); testList.Sort();

至于在枚举和字符串之间使用switch-case语句,我不确定。

答案 2 :(得分:0)

对于枚举枚举值列表,使用默认排序只会根据枚举中值的顺序排序。因此,在您的示例中,顺序不会更改,因为它们在枚举中的顺序相同。要获得按字母顺序排序,您需要一个自定义排序器。像这样:

    int enumsort(Color a, Color b)
    {
        return a.ToString().CompareTo(b.ToString());
    }

然后按如下方式对列表进行排序:

testlist.Sort(enumsort);

您也可以使用LINQ路由并使用OrderBy方法。它可能看起来像这样:

testlist = testlist.OrderBy(x => x.ToString()).ToList<Color>();