web-dev-qa-db-ja.com

C#での文字列配列の並べ替え

奇妙に聞こえるかもしれませんが、長いプログラミングの後に、配列の並べ替えを始めました。内部に2つの同一の文字列を含む文字列の配列を並べ替えようとするまで、すべてが期待どおりでした。どれどれ:

次のものがあるとします。

string[] testArray = new string[]
    {
        "aa",
        "ab",
        "ac",
        "ad",
        "ab",
        "af"
    };

Array.Sort(testArray, StringComparer.InvariantCulture);

この状況では、null値のプレーンプレーンを取得します。この動作は、配列内の値が個別の値ではないためだとわかりました。これについてより良い説明はありますか?異なる配列を並べ替えるにはどうすればよいですか?

18
user586254

このコードスニペットは正常に動作しています enter image description here

49
Stecya

番号に問題がある場合(たとえば、1、2、10、12は1、10、12、2にソートされます)、 [〜#〜] linq [〜#〜] を使用できます。

var arr = arr.OrderBy(x=>x).ToArray();
7
Zebi

実際、nullは表示されません。

与えられた:

static void Main()
        {
            string[] testArray = new string[]
            {
                "aa",
                "ab",
                "ac",
                "ad",
                "ab",
                "af"
            };

            Array.Sort(testArray, StringComparer.InvariantCulture);

            Array.ForEach(testArray, x => Console.WriteLine(x));
        }

私が得ました:

enter image description here

0
lukaszk