也许这听起来很奇怪,但经过很长时间的编程后,我才开始进行数组排序。一切都如我所料,直到我试图对包含两个相同字符串的字符串数组进行排序。我们来看看:
假设有以下内容:
string[] testArray = new string[]
{
"aa",
"ab",
"ac",
"ad",
"ab",
"af"
};
Array.Sort(testArray, StringComparer.InvariantCulture);
在这种情况下,我得到一个空值的数组。我知道这种行为是因为数组中的值不是不同的值。对此有更好的解释吗?如何对非独特数组进行排序?
答案 0 :(得分:44)
此代码段正常运行
答案 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));
}
我获得了: