【问题标题】:C# Array number sortingC# 数组编号排序
【发布时间】:2010-12-22 10:37:23
【问题描述】:

我有一个从 0 到 9 的数字数组。

如何按升序对它们进行排序?

Array.Sort 对我不起作用。还有其他方法吗?

提前致谢。

编辑: Array.Sort 给了我这个错误。

参数 1:无法从 'string' 转换为 'System.Array'

现在它给了我这个输出:

0) 版本信息.xml

2) luizafroes_singapore2951478702.xml

3) virua837890738.xml

4)darkwizar9102314425644.xml

5) snarterz_584609551.xml

6) alysiayeo594136055.xml

1) z-a-n-n2306499277.xml

7) zhangliyi_memories932668799030.xml

8) andy_tan911368887723.xml

9) 配置.xml

k 是 0-9 之间的数字

                    string[] valnames = rk2.GetValueNames();

                foreach (string k in valnames)
                {
                    if (k == "MRUListEx")
                    {
                        continue;
                    }

                    Byte[] byteValue = (Byte[])rk2.GetValue(k);

                    UnicodeEncoding unicode = new UnicodeEncoding();
                    string val = unicode.GetString(byteValue);

                    Array.Sort(k); //Error here
                    richTextBoxRecentDoc.AppendText("\n" + k + ") " + val + "\n");
                }

【问题讨论】:

  • Array.Sort 应该可以工作。为什么它不起作用?能否请您扩展问题?
  • 刚刚编辑。我该如何解决这个问题?
  • 您正在运行什么代码来创建和排序数组?
  • “参数 1:无法从 'string' 转换为 'System.Array'”。您可能没有使用整数数组。 int[] myNums = {3, 2, 8, 5, 4, 9};
  • 你能把代码贴出来,除了错误信息吗?它不应超过 2 行。

标签: c# arrays sorting


【解决方案1】:

你的问题是 k 不是一个数组而是一个字符串!

我感觉这就是你想要做的:

string[] valnames = rk2.GetValueNames();
valnames = valnames.OrderBy (s => int.Parse(s)).ToArray();

for (int i= 0 ; i < balnames.Lenght ; i++)
{
    k = valenames[i];
    if (k == "MRUListEx")
    {
        continue;
    }
    Byte[] byteValue = (Byte[])rk2.GetValue(k);

    UnicodeEncoding unicode = new UnicodeEncoding();
    string val = unicode.GetString(byteValue);

    richTextBoxRecentDoc.AppendText("\n" + i + ") " + val + "\n");
}

【讨论】:

  • 那么我应该如何解决我的问题呢?它给了我 0-9 的数字。
  • 我不太确定您要做什么,但循环之前的 Array.Sort(valnames) 可能会满足您的需要,不是吗?
  • 只能使用 Array.Sort 对数组进行排序。字符串不是数组。您需要重新考虑代码的用途。
  • 您应该通过使用数组而不是字符串调用 Array.Sort 来解决问题! (例如 Array.Sort(byteValue);)。不管你想排序的是什么,它几乎肯定不是 k!
  • 输出将是 1 10 11 12 13 14 15 16 2 21 22 23 24 25。如何按升序排列?
【解决方案2】:

你确定你有一个整数数组还是你存储了一个 System.Object 数组,在这种情况下你会遇到前导空格的问题。

【讨论】:

    【解决方案3】:

    您正在尝试对字符串进行排序。这是不可能的。

    此代码将为您提供所需的输出:

    string[] valnames = rk2.GetValueNames();
    
    for (int i = valnames.Length - 1; i >= 0; i--)
    {
        string k = valnames[i];
        if (k == "MRUListEx")
            continue;
    
        Byte[] byteValue = (Byte[])rk2.GetValue(k);
        UnicodeEncoding unicode = new UnicodeEncoding();
        string val = unicode.GetString(byteValue);
    
        richTextBoxRecentDoc.AppendText("\n" + k + ") " + val + "\n");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多