DataTable排序结果的纠正
时间:2022-04-24
本文章向大家介绍DataTable排序结果的纠正,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
默认情况下,即便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
- 解决连通性问题的四种算法
- 使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)
- Jdbc知识点全整理,你值得拥有 (1)
- SSD: Single Shot MultiBox Detector 深度学习笔记之SSD物体检测模型
- dg broker校验失败的一个奇怪问题(r8笔记第50天)
- golang 几种字符串的连接方式
- 整理ING
- dg broker校验失败的一个奇怪问题(二) (r8笔记第51天)
- Jdbc知识点全整理,你值得拥有 (2)
- 抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析
- Python 用OPEN读文件报错 ,路径以及r
- python 如何设置多线程
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- python 多进程设置 整理版本1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mac 最新版Python3.7.4安装配置,设置默认python版本
- 15个应该掌握的Jupyter Notebook 使用技巧
- python 环境重启方法,系统环境变量配置后python生效设置方法
- 快速上手 WebAssembly 应用开发:Emscripten 使用入门
- Python爬虫之mongodb的索引操作
- (六)日志生成
- Python爬虫之mongodb的权限管理
- Python爬虫之mongodb和python交互
- 转录组分析 | 使用RSeQC软件对生成的BAM文件进行质控
- 转录组分析 | 使用Stringtie对数据进行下游处理
- 存在重复元素
- CentOS7下LNMP环境搭建Discuz论坛
- 【小项目】使用shell和expect实现简易的文件分发系统
- expect快速入门
- 【小项目】:使用shell编写一个简单的告警系统