List<string> list = new List<string>();list.Add("a1");
list.Add("a2");
list.Add("a10");list.Sort();foreach (string str in list)
      Console.Out.WriteLine(str);Console.In.Read();输出:
a1
a10
a2我想要的输出是:
a1
a2
a10我应该怎么做?

解决方案 »

  1.   

    Sort(ICompare)
    实现ICompare
    先判断长度在比较
      

  2.   

    try
    List<string> list1 = new List<string>();list1.Add("a1");
    list1.Add("a2");
    list1.Add("a10");List<int> list2 = new List<int>();
    foreach (string s in list1)
    {
        list2.Add(Convert.ToInt32(s.Substring(1)));
    }string[] result = list1.ToArray();
    Array.Sort(list2.ToArray(), result);
    foreach (string s in result)
    {
        Console.WriteLine(s);
    }
    Console.ReadLine();
      

  3.   

    TO: hdt(倦怠)
    能不能给个小例子,谢谢!
      

  4.   

    这样改一下就可以了list.Add("a01");
    list.Add("a02");
    list.Add("a10");
      

  5.   

    public int MyComparison(string x, string y)
    {
        int iX = 0;
        int.TryParse(x.Substring(1), out iX);
        int iY = 0;
        int.TryParse(y.Substring(1), out iY);
        return iX - iY;
    }private void button1_Click(object sender, EventArgs e)
    {
        List<string> list = new List<string>();    list.Add("a1");
        list.Add("a2");
        list.Add("a10");    list.Sort(MyComparison);    foreach (string str in list)
            Console.WriteLine(str);
    }
      

  6.   

    public int MyComparison(string x, string y)
    {
          Regex regex = new Regex("(?<number>\\d+$)");
                int n1 = int.Parse(regex.Match( str1 ).Groups["number"].Value);
                int n2 = int.Parse(regex.Match( str2 ).Groups["number"].Value);
          return n1-n2;
    }
      

  7.   

    谢谢各位!特别感谢 hdt(倦怠) ,你的方法最简单。
      

  8.   

    谢谢各位!特别感谢 hdt(倦怠) ,你的方法最简单。
      

  9.   

    谢谢各位!特别感谢 hdt(倦怠) ,你的方法最简单。