博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataTable排序结果的纠正
阅读量:7240 次
发布时间:2019-06-29

本文共 1936 字,大约阅读时间需要 6 分钟。

默认情况下,即便db中某一列的值是数字,查询出来的DataSet/DataTable里,Column的类型都是String型,所以当用dataTable.DefaultView.Sort ="XXX ASC"排序时,都是按字符串排序处理的,并不是我们想要的结果,下面给出了二种解决办法:

using System;using System.Data;namespace DataTableSortSample{    class Program    {        static void Main(string[] args)        {            DataTable dt = new DataTable();            dt.Columns.Add("Month");            dt.Rows.Add("1");            dt.Rows.Add("11");            dt.Rows.Add("2");            dt.Rows.Add("12");            dt.DefaultView.Sort = "Month ASC";            dt = dt.DefaultView.ToTable();            foreach (DataRow s in dt.Rows)            {                Console.WriteLine(s["Month"]);            }            Console.WriteLine("----------------------------------");            #region 方法1:将月份补齐为2位 (前提:补齐这种方案并非所有需求都能接受,这个要看该列的业务含义)            for (int i = 0; i < dt.Rows.Count; i++)            {                dt.Rows[i]["Month"] = dt.Rows[i]["Month"].ToString().PadLeft(2, '0');            }            dt.DefaultView.Sort = "Month ASC";            dt = dt.DefaultView.ToTable();            foreach (DataRow s in dt.Rows)            {                Console.WriteLine(s["Month"]);            }            #endregion            Console.WriteLine("----------------------------------");            #region 方法2:建一个新DataTable,将Month列类型,修改成int型,然后导入数据            DataTable dtNew = dt.Clone();            dtNew.Columns["Month"].DataType = typeof (int);//重新指定列类型为int型            foreach (DataRow s in dt.Rows)            {                dtNew.ImportRow(s);//导入旧数据            }            dtNew.DefaultView.Sort = "Month ASC";            dtNew = dtNew.DefaultView.ToTable();            foreach (DataRow s in dtNew.Rows)            {                Console.WriteLine(s["Month"]);            }            #endregion            Console.Read();        }    }}

  运行结果:

1

11
12
2
----------------------------------
01
02
11
12
----------------------------------
1
2
11
12

 

转载地址:http://euybm.baihongyu.com/

你可能感兴趣的文章
PING主机名称不通的解决
查看>>
selenium 获取http页面请求信息状态码
查看>>
LINUX系统编程之IPC
查看>>
今天刚学的c++,两个程序。
查看>>
MBR扇区故障及修复
查看>>
磁盘分区
查看>>
获取jar包路径,遍历
查看>>
solidity智能合约[40]-memory属性
查看>>
【VMware vSAN 6.6】5.1.基于存储策略的管理:vSAN硬件服务器解决方案
查看>>
javascript基础修炼(10)——VirtualDOM和基本DFS
查看>>
ISTP论文发表 SCI论文发表 EI论文发表常识
查看>>
怎样轻松几步将视频转换成GIF
查看>>
离线批量数据通道Tunnel的最佳实践及常见问题
查看>>
ECS应用管理最佳实践
查看>>
12.throw和throws是的区别
查看>>
115.springboot + mybaties
查看>>
福建海峡银行使用ManageEngine统一管控业务应用系统
查看>>
ssh访问与控制
查看>>
java访问数据库
查看>>
皆大欢喜!iPhone不再耗电,续航增加就靠它
查看>>