0

例如,如果我有一个枚举列表

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

我有一个清单List<Color> testList;

例如,在我的 testList 中,我有 Red、Yellow 和 Black

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

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

谢谢

4

3 回答 3

4

您可以像这样订购它们:

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

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

结果:

枚举排序

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

于 2013-07-22T03:29:45.150 回答
0

您可以通过此对 List 的值进行排序。

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

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

于 2013-07-22T03:34:07.573 回答
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>();
于 2013-07-22T04:38:11.313 回答