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. seo伪原创技术原理分析,php实现伪原创示例

    seo伪原创技术原理分析,php实现伪原创示例 现在seo伪原创一般采用分词引擎以及动态同义词库,模拟百度(baidu),谷歌(google)等中文切词进行伪原创,生成后的伪原创文章更准确更贴近百度和 ...

  2. memcache缓存详解

    这篇文章主要介绍了PHP中的Memcache,从Memcache简介开始,详细讲解了如Memcache和memcached的区别.PHP的 Memcache所有操作方法.每个操作方法的详细解释等,需要 ...

  3. Linux MTD系统剖析【转】

    转自:http://blog.csdn.net/lwj103862095/article/details/21545791 版权声明:本文为博主原创文章,未经博主允许不得转载. MTD,Memory ...

  4. 【Pro ASP.NET MVC 3 Framework】.学习笔记.12.ASP.NET MVC3的细节:URLs,Routing和Areas

    Adam Applied ASP.NET 4 in Context 1 介绍Routing系统 在引入MVC之前,ASP.NET假定被请求的URLs和服务器硬盘上的文件之间有着直接关系.服务器的任务是 ...

  5. org.hibernate.MappingException: Unknown entity常见问题。回顾笔记,以前没记,现在补上,xiaochao写的蛮好的直接给转载了。

    转自http://www.blogjava.net/xiaochao/articles/hibernatetopic.html. 官方说明如下: Hibernate遵循EJB3.0实体bean的注解规 ...

  6. Linux下Nagios的安装与配置

    一.本文说明 本文是在参考:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html   David_Tang文章以及网上的一些资料完 ...

  7. Jetty 嵌入式开发(实例)

    我尝试了jetty几个版本,类的使用有些差异,在此记录下jettyVersion = 9.0.2.v20130417 的部分实例 maven 依赖及配置: <properties> < ...

  8. 《图解TCP/IP》

    MAC寻址:地址转发表:IP寻址:路由控制表. 网卡(网络接口卡),NIC. 循环复用DNS技术. 代理服务器是一种应用网关.防火墙. LLC是Logical Link Control的缩写,意为:逻 ...

  9. DevExpress.XtraGrid.Views.BandedGrid.BandedGridView

    使用的是DevExpress.XtraGrid.Views.BandedGrid.BandedGridView 类 没有在工具箱里找到对应控件 ,绕了一下,先创建一个gridcontrol ,然后gr ...

  10. Ugly Numbers

    Ugly Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21918 Accepted: 9788 Descrip ...