如题,当我把堆数字传到datatable 然后再用dataview排序时,9总在最上面,
我这些数字式 INT型,

解决方案 »

  1.   

    DataTable dt = new DataTable();
                dt.Columns.Add("Sum");
                DataRow dr = dt.NewRow();
                dr["Sum"] = 1;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Sum"] = 2;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Sum"] = 3;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Sum"] = 4;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dt.Rows.Add(dr);
                dt.DefaultView.Sort = "Sum ASC";
                DataTable dtTemp = dt.DefaultView.ToTable();
    dtTemp 即按你需要排序的表。 
    根据对应的值排序即可
      

  2.   

    肯定是不小心转成string类型了。
      

  3.   

    汗 我贴源码  你们看下  刚去吃了个饭.....            int[,] a = new int[4, 2];
                a[0, 0] = 1;
                a[0, 1] = 10;
                a[1, 0] = 2;
                a[1, 1] = 15;
                a[2, 0] = 3;
                a[2, 1] = 9;
                a[3, 0] = 4;
                a[3, 1] = 12;            DataTable dt = new DataTable();
                dt.Columns.Add("a");
                dt.Columns.Add("b");
                if (a[2, 1] > a[1, 1])
                {
                    System.Console.Write("9比15还打?");
                }
                else
                {
                    System.Console.WriteLines("还是15大些!");
                }            for (int i = 0; i < 4; i++)
                {
                    DataRow dr = dt.NewRow();
                    for (int j = 0; j < 2; j++)
                    {
                        if (j == 0)
                        {
                            dr[0] = a[i, 0];
                        }
                        else
                        {
                            dr[1] = a[i, 1];
                        }
                    }
                    dt.Rows.Add(dr);
                }
                DataView dv = new DataView(dt);
                dv.Sort = "b desc";
      

  4.   

    这个之后 就9在上面了 为啥啊???哪一句转化成string?大家帮个忙啊 
      

  5.   

    dataview肯定是按照字符串的形式排序的,你吧所有的数字都格式化为2位即9为09,就应该么有问题了
      

  6.   

    是这样吗???
    可是我以前写过一个就可以啊  并且 这个我用dv.Sort = "a desc";
    dv.Sort = "a asc";
    都是 OK  为什么 是第二列的时候就不行呢 ??/
      

  7.   

    dt.Columns.Add("a",typeof(int));
    dt.Columns.Add("b",typeof(int));
      

  8.   

    dt.Columns.Add("a");
    dt.Columns.Add("b");这是INT型?忽悠鬼呢!看#12楼
      

  9.   

    .net framework源代码中写的明明白白,默认的,就是string类型。public class DataColumn : MarshalByValueComponent
    {
      public DataColumn(string columnName) : this(columnName, typeof(string), null, MappingType.Element){}
      

  10.   

    刚结贴了  哈哈....
    SP1234 你说的那些太高深了,
    谁没事去看.netframework源码啊   是不是 !!!
      

  11.   

    哦,之前的一段:public sealed class DataColumnCollection : InternalDataCollectionBase
    {
    public DataColumn Add(string columnName)
    {
        DataColumn column = new DataColumn(columnName);
        this.Add(column);
        return column;
    }
    因此当你向 dt.Columns 插入一个列名时,调用这个方法,它要 new 一个DataColumn出来,默认地就是 typeof(string)作为类型。