2013-07-22 9 views
0

如果我有例如我可以排序枚舉的列表,因爲我排序的字符串列表?

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

枚舉的列表,我有一個列表List<Color> testList;

例如,在我的testList,我有紅色,黃色和黑色

我可以排序我testList,因此我得到黑色,紅色和黃色,因爲我使用sort()作爲字符串列表?

如果我想使用switch語句,是否有任何性能考慮我切換字符串或枚舉?哪一個更快?

感謝

回答

4

可以這樣進行訂購:

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

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

結果:

enum sorting

注:我故意漏掉任何一個細節有關的性能問題..有贏」在你的switch中沒有任何明顯的性能問題..所以不用擔心:)

+0

謝謝!我發現的最後一個答案是使用Cast 而不是OfType ,並且仍然按照枚舉的數值對它們進行排序。 – krillgar

0

您可以通過此列表對您的值進行排序。

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

至於在枚舉和字符串之間使用switch-case語句,我不確定。

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