在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)); }
我获得了: