List<String[]> list = new ArrayList<String[]>();            list.add(new String[] { "1.2", "2.9", "1.4" });
            list.add(new String[] { "1.5", "1.6", "1.7" });
            list.add(new String[] { "1.2", "1.9", "2.0" });
            list.add(new String[] { "2.1", "2.2", "2.3" });
            list.add(new String[] { "2.4", "2.5", "2.6" });
用第一列排序 如果数组中的第一个元素的值相同  则按照第二个元素排序 这个问题怎么实现   希望前辈们帮忙   我这里有一段java代码  但是 java提供的方法和 c#不同  我变不成c#代码  如果需要看下 java 代码  我马上贴出!

解决方案 »

  1.   

     var li = list.OrderBy(l => l[0]).ThenBy(l=>l[1]);
      

  2.   


    这个怎么用啊 在winform里面
      

  3.   

    using System.Linq; 我这里在 顶部写不出来
      

  4.   

    用DataTable也行 再用它的Select方法  
    具体看MSDN很清楚的
      

  5.   

    list.Sort(delegate(string[] lhs, string[] rhs)
    {
         # 伪码
          if (lhs > rhs) return 1;
         else if (rhs > lhs) return -1;
         else return 0;
    }
    );
      

  6.   

    我刚试了 报错    if (lhs > rhs)  数组不可以那样比较
      

  7.   

     list.Sort((first,second)=>first[0].CompareTo(second[0]));
      

  8.   

    List<String[]> list = new List<String[]>();list.Add(new String[] { "1.2", "2.9", "1.4" });
    list.Add(new String[] { "1.5", "1.6", "1.7" });
    list.Add(new String[] { "1.2", "1.9", "2.0" });
    list.Add(new String[] { "2.1", "2.2", "2.3" });
    list.Add(new String[] { "2.4", "2.5", "2.6" });var res = from s in list orderby s[0], s[1] select s;
    list = res.ToList();
    foreach (string[] item in list)
    {
        MessageBox.Show(item[0] + "\r\n" + item[1]);
    }
      

  9.   

    list.Sort(delegate(string[] lhs, string[] rhs)
    {
    if (lhs[0] > rhs[0]) return 1;
    else if (rhs[0] > lhs[0]) return -1;
    else if (lhs[1] > rhs[1]) return 1;
    else if (rhs[1] > lhs[1]) return -1;
    else return 0;
    }
    );
    现在的人真懒
      

  10.   

     
    Valefish    前辈说 用datable   我实现了 wuyazhe     前辈  说的用法 var res = from s in list orderby s[0], s[1] select s;
                我在我vs里面using 不了linq  可能是我用的vs2005 我怎么才可以用linq呢? 是不是得添加一个引用 如果是 麻烦告诉我一下 是什么?visir       前辈说的这种方法  可以实现 我也通过手写实现了 
    delegate(string[] lhs, string[] rhs)
    {
        if (lhs[0].CompareTo(rhs[0]) > 0) return 1;
        else if (rhs[0].CompareTo(lhs[0]) > 0) return -1;
        else if (lhs[1].CompareTo(rhs[1]) > 0) return 1;
        else if (rhs[1].CompareTo(lhs[1]) > 0) return -1;
        else return 0;
    }非常感谢 各位前辈 能在百忙中 帮我解决问题 但是还有 就是  delegate 是委托  这个怎么用啊 我看到 sort的构造函数里面就没有 这个参数啊  这个我用的时候怎么用呢  谢谢   
      

  11.   

    datatable要重组你的数据结构, 完了后你不得不又转回成list, 可能你的需求不一样, 不一定要转回来了linq不是.net 2.0的东西Sort是一个方法, 接收一个委托类型作为参数, 看看书上委托相关的章节就明白了
      

  12.   

    o  谢谢你了  了   visir 前辈  我可以加一下你的q吗  有什么问题 你可以帮我吗