【问题标题】:Sorting string array in C# [closed]在C#中对字符串数组进行排序[关闭]
【发布时间】:2011-09-04 06:07:35
【问题描述】:

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

假设有以下内容:

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

Array.Sort(testArray, StringComparer.InvariantCulture);

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

【问题讨论】:

  • “我知道这种行为是因为数组中的值不是不同的值” - 不太可能。
  • 你确定你真的用提供的代码得到空值吗?我只是测试它,它工作正常
  • 请花一些时间来验证问题确实是由发布的代码引起的。
  • 我很抱歉!我昨天做了几个测试,似乎该行为是由于数组中的非不同值造成的。我再次重新测试了一切,它工作正常。错误可能在其他地方。谢谢耐心!另一个问题:什么时候排序方法可以给出包含空值的数组?谢谢

标签: c# arrays sorting


【解决方案1】:

这段代码sn-p工作正常

【讨论】:

  • 我很抱歉!我昨天做了几个测试,似乎该行为是由于数组中的非不同值造成的。我再次重新测试了所有内容,它工作正常。错误可能在其他地方。谢谢耐心!另一个问题:什么时候排序方法可以给出包含空值的数组?谢谢
  • 如何复制和粘贴图像? ;)
【解决方案2】:

如果您对数字有疑问(例如 1、2、10、12,将按 1、10、12、2 排序),您可以使用LINQ

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

【讨论】:

    【解决方案3】:

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

    给定:

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

    我得到了:

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2013-09-22
      相关资源
      最近更新 更多