帮忙看下下面这段代码,我应该怎么改合适,实现dt 按查询的数据的原先顺序排序
                DataTable source = ds.Tables[0];//日期
                DataTable user = ds.Tables[1];//用户
                DataTable dt = new DataTable();//显示dt                dt.Columns.Add(new DataColumn("user"));
                foreach (DataRow var in source.Rows)
                {
                    DataColumn newcolumn = new DataColumn(var["SDATE"].ToString());
                    newcolumn.Caption = var["SDATE"].ToString();
                    newcolumn.DataType = typeof(bool);
                    newcolumn.DefaultValue = false;
                    dt.Columns.Add(newcolumn);
                }                DataTable db = ds.Tables[2];//查出的日志信息
                System.Collections.Hashtable hasTable = new System.Collections.Hashtable();
                foreach (DataRow var in user.Rows)
                {
                    string keys = var["name"].ToString();
                    DataRow row = dt.NewRow();
                    row["user"] = keys;
                    hasTable.Add(keys, row);
                }
                foreach (DataRow var in db.Rows)
                {
                    string keys = var["name"].ToString();
                    DataRow userRow = null;
                    if (hasTable.ContainsKey(keys))
                    {
                        userRow = hasTable[keys] as DataRow;
                    }
                    else
                    { }
                    userRow[var["DIARYDATE"].ToString()] = (var["auditstatus"].ToString() == "1");
                }                foreach (DataRow var in hasTable.Values)
                {
                    dt.Rows.Add(var);
                }

解决方案 »

  1.   

    hasTable 本来就不排序的,你怎么可能实现排序?
    如果要按添加顺序(中间不存在删除),那么可以用Dictionary<String,Object>
      

  2.   

    直接对 dt 建立 DataView
    用视图来排序吧。
      

  3.   

    是的 用Dictionary 替换确实可以还有木有更好的方法呢
     Dictionary<string, object> dict = new Dictionary<string, object>();
                    //添加用户键到hashtable
                    foreach (DataRow var in user.Rows)
                    {
                        string keys = var["name"].ToString();
                        DataRow row = dt.NewRow();
                        row["用户"] = keys;
                        dict.Add(keys, row);
                    }
                    foreach (DataRow var in db.Rows)
                    {
                        string keys = var["name"].ToString();
                        DataRow userRow = null;
                        if (dict.ContainsKey(keys))
                        {
                            userRow = dict[keys] as DataRow;
                        }
                        else
                        { }
                        userRow[var["DIARYDATE"].ToString()] = (var["auditstatus"].ToString() == "1");
                    }                foreach (DataRow var in dict.Values)
                    {
                        dt.Rows.Add(var);
                    }
      

  4.   

    用DataView 排序 ? 能告诉我 具体怎么排吗?