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
    }

DataTable字符串类型的数字,按照数字类型排序的更多相关文章

  1. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

    今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3   比较简单.就是 ...

  2. js将某个值转换为String字符串类型或转换为Number数字类型

    将某个值转换为String类型 1. value.toString() toString()方法返回一个表示该对象的字符串 var a = 123 a.toString() // '123' 2. & ...

  3. day05数据类型,数字类型,字符串类型,字符串的操作方法,列表类型的操作方法,可变类型与不可变类型

    复习 ''' 流程控制 1.顺序结构.分支结构.循环结构 2.if分支结构 if 条件: 代码块 elif 条件: 代码块 else: 代码块 # 可以被if转换为False:0 | '' | Non ...

  4. JavaScript 中的数字和日期类型

    本章节介绍如何掌握Javascript里的数字和日期类型 数字EDIT 在 JavaScript 里面,数字都是双精度浮点类型的 double-precision 64-bit binary form ...

  5. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  6. Java中long类型直接赋值大数字 注意事项

    在java中,我们都知道有八种基本数据类型:byte. char. short .int. long. float. double .boolean 下面列出以下四种数据类型及其取值范围: 本文主要讲 ...

  7. SQL算术数字的默认类型

    select 100*100*100*100*100 --错误:将 expression 转换为数据类型 int 时出现算术溢出错误. select   cast(1000 as  bigint) * ...

  8. DB2中字符、数字和日期类型之间的转换

    DB2中字符.数字和日期类型之间的转换 一般我们在使用DB2或Oracle的过程中,经常会在数字<->字符<->日期三种类 型之间做转换,那么在DB2和Oracle中,他们分别 ...

  9. js字符串转换成数字与数字转换成字符串的实现方法

    转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...

  10. js字符串转换成数字,数字转换成字符串

    转自网络,忘记出处了. js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseIn ...

随机推荐

  1. Java的多线程+Socket 后台

    打包好可执行的jar文件之后, 用ftp上传到服务器, 用nohup命令, 让这个服务器在后台运行, 并将输出重定向到log文件中, 命令是: #nohup java -jar MTSServer.j ...

  2. nginx源码安装

    1,首先解决系统环境: 安装rpm包组{CentOS6 跟开发相关的包组:} a.  Development Tools #yum groupinstall "Development Too ...

  3. Java编译那些事儿【转】

    转自:http://blog.csdn.net/lincyang/article/details/8553481 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 命令行编译 使 ...

  4. Hibernate,Session清理缓存时间点

    当应用程序调用org.hibernate.Transaction的commit()的时候,commit()方法先清理缓存,然后再向数据库提交事务. 当应用程序显示调用Session.flush()方法 ...

  5. JavaScript的一些基本语句代码如下!!!!

    <html><body> <script type="text/javascript">document.write("<h1& ...

  6. HDU 4405:Aeroplane chess(概率DP入门)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description   Hzz loves ...

  7. C#:通过Window API接口实现WiFi

    1.获取Mac地址 //WiFi通知回调 private WlanApi.WLAN_NOTIFICATION_CALLBACK _notificationCallback; this._notific ...

  8. Effective C++第三遍

    试图调用private的copy或赋值函数是编译期错误,而调用没有具体定义的函数则是连接期错误. 以对象管理资源:智能指针RAII(资源获取立即初始化)后都是对象,但有时候,比如(API的)函数参数要 ...

  9. css3 动画 执行一次

    function testAnim(x) {   $('#animationSandbox').removeClass().addClass(x + ' animated').one('webkitA ...

  10. YTU 2019: 鞍点计算

    2019: 鞍点计算 时间限制: 1 Sec  内存限制: 64 MB 提交: 66  解决: 30 题目描述 找出具有m行n列二维数组Array的"鞍点",即该位置上的元素在该行 ...