在C#中排序字符串数组

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

假设有以下内容:

string[] testArray = new string[] { "aa", "ab", "ac", "ad", "ab", "af" }; Array.Sort(testArray, StringComparer.InvariantCulture); 

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

此代码段正常运行 在此处输入图像描述

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

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

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

给定:

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

我获得了:

在此处输入图像描述