0

たとえば、Enumのリストがある場合

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

そして、私はリストを持っていますList<Color> testList;

たとえば、私のtestListには、赤、黄、黒があります

文字列のリストに sort() を使用すると、testList を並べ替えて、黒、赤、黄色を取得できますか?

また、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<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 に答える