当前位置: 移动技术网 > IT编程>开发语言>c# > C#对DataTable里数据排序的方法

C#对DataTable里数据排序的方法

2019年07月18日  | 移动技术网IT编程  | 我要评论
直接给个实例代码吧复制代码 代码如下:protected void page_load(object sender, eventargs e)  &nb

直接给个实例代码吧

复制代码 代码如下:

protected void page_load(object sender, eventargs e)
    {
        datatable dt = new datatable();
        dt.columns.add("name");
        dt.columns.add("age");//因为是字符串,所以排序不对
        dt.rows.add("小明", "21");
        dt.rows.add("小张", "10");
        dt.rows.add("小红", "9");
        dt.rows.add("小伟", "7");
        dt.rows.add("小美", "3");
        dt.defaultview.sort = "age asc";
        dt = dt.defaultview.totable();

        foreach (datarow s in dt.rows)
        {
            response.write(s["age"].tostring() + "--" + s["name"].tostring() + "<br/>");
        }
        response.write("------------------1----------------<br/>");

 
        #region 方法1:将年龄补齐为2位,然后再进行排序,但是实际不应该有0(仅作参考)
        for (int i = 0; i < dt.rows.count; i++)
        {
            dt.rows[i]["age"] = dt.rows[i]["age"].tostring().padleft(2, '0');
        }
        dt.defaultview.sort = "age asc";

        dt = dt.defaultview.totable();

        foreach (datarow s in dt.rows)
        {
            response.write(s["age"].tostring() + "--" + s["name"].tostring() + "<br/>");
        }
        #endregion

        response.write("------------------2----------------<br/>");

        #region 方法2:创建新的datatable,将age类型变更为int类型
        datatable dtnew = dt.clone();
        dtnew.columns["age"].datatype = typeof(int);//指定age为int类型
        foreach (datarow s in dt.rows)
        {
            dtnew.importrow(s);//导入旧数据
        }

        dtnew.defaultview.sort = "age asc";
        dtnew = dtnew.defaultview.totable();

        foreach (datarow s in dtnew.rows)
        {
            response.write(s["age"].tostring() + "--" + s["name"].tostring() + "<br/>");
        }
        #endregion

        response.write("-----------------3-----------------<br/>");

        #region 方法3:添加一列,主要用于排序
        dt.columns.add("agelength", typeof(int), "len(age)");//添加该列时,datatable列数据即生成

        dt.defaultview.sort = "agelength,age asc";
        dt = dt.defaultview.totable();

        foreach (datarow s in dt.rows)
        {
            response.write(s["age"].tostring() + "--" + s["name"].tostring() + "<br/>");
        }
        #endregion

        response.write("-----------------4-----------------<br/>");

        #region 方法4:运用linq,将datatable转换为集合,再调用集合自带的排序方法进行排序
        foreach (datarow s in dt.rows.cast<datarow>().orderby(r => int.parse(r["age"].tostring())))
        {
            response.write(s["age"].tostring() + "--" + s["name"].tostring() + "<br/>");
        }
        #endregion
    }

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网