在C#中排序字符串数组

时间:2011-05-29 09:59:39

标签: c# arrays sorting

也许这听起来很奇怪,但经过很长时间的编程后,我才开始进行数组排序。一切都如我所料,直到我试图对包含两个相同字符串的字符串数组进行排序。我们来看看:

假设有以下内容:

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

Array.Sort(testArray, StringComparer.InvariantCulture);

在这种情况下,我得到一个空值的数组。我知道这种行为是因为数组中的值不是不同的值。对此有更好的解释吗?如何对非独特数组进行排序?

3 个答案:

答案 0 :(得分:44)

此代码段正常运行 enter image description here

答案 1 :(得分:6)

如果您遇到数字问题(例如1,2,10,12,它们将分类为1,10,12,2),您可以使用LINQ

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

答案 2 :(得分:0)

实际上我没有看到任何空值:

下式给出:

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