C# DataTable中按字符串中的数字排序
例如datatable中有一列是门牌号格式是xx-xx-xx,或字符串中含有汉字或其他符号等等,如何按照正确的数字顺序排序呢?
1、获得字符串中的数字。
2、在datatable中添加一列,类型是Int或double或decimal类型的,转为排序准备。然后利用dataview.sort来排序。
1、获得字符串中的数字代码:
/// <summary>
/// 获取字符串中的数字
/// </summary>
/// <param name="str">字符串</param>
/// <returns>数字</returns>
public static decimal GetNumber(string str)
{
decimal result = ;
if (!string.IsNullOrEmpty(str))
{
// 正则表达式剔除非数字字符(不包含小数点.)
str = Regex.Replace(str, @"[^\d.\d]", "");
// 如果是数字,则转换为decimal类型
if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))
{
result = decimal.Parse(str);
}
}
return result;
}
2、排序
DataTable dt = new DataTable();
DataColumn dc = dt.Columns.Add("OBJECTID", Type.GetType("System.String"));
dc = dt.Columns.Add("YDDW", Type.GetType("System.String"));
dc = dt.Columns.Add("XMMC", Type.GetType("System.String"));
dc = dt.Columns.Add("XH", typeof(decimal));//添加XH一列,类型为decimal用于排序
while (feature != null)
{
int field1 = feature.Fields.FindField("YDDW");
int field2 = feature.Fields.FindField("XMMC");
int field3 = feature.Fields.FindField("XH");
string strOID = feature.OID.ToString();
string strYDDW = feature.get_Value(field1).ToString();
string strXMMC = feature.get_Value(field2).ToString();
string strXH = feature.get_Value(field3).ToString();//原字符串 decimal xh = Common.GetNumber(strXH);//从原字符串中提取数字
DataRow dr = dt.NewRow();
dr["OBJECTID"] = strOID;
dr["YDDW"] = strYDDW;
dr["XMMC"] = strXMMC;
dr["XH"] = xh;//赋值
dt.Rows.Add(dr);
feature = featureCursor.NextFeature();
}
dgvList.AutoGenerateColumns = false;//禁止自动添加列
DataView dv = dt.DefaultView;//转化DataView
dv.Sort = "XH Asc";//排序
dgvList.DataSource = dt;//绑定数据
C# DataTable中按字符串中的数字排序的更多相关文章
- 字符串--java中判断字符串是否为数字的方法的几种方法?
ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- 在SQL中取出字符串中数字部分或在SQL中取出字符部分
在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...
- java中判断字符串是否为数字的方法的几种方法
1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...
- (转载)java中判断字符串是否为数字的方法的几种方法
java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- PHP中去除字符串中的换行的方法
在PHP中,有时候我们需要对字符串的换行进行过滤,比如天涯PHP博客中文章页面的description信息,我是直接截取的文章内容,并过滤掉html符号,最终还要过滤掉其中的换行.下面整理一下常见的去 ...
- PHP中取出字符串中的空格 逗号
preg_replace("/\s| |,|,/","",$_str) PHP中取出字符串中的空格 逗号 (包括中文状态下)
- C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?
C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: using System; u ...
- Python中去除字符串中的单个或多个空格的方法总结
python中去除字符串中空格的方法比较多,单个看起来也都比较简单 但是使用起来容易发生混淆 为了加深记忆 将常用的去除字符串中空格的方法汇总如下 方法一:strip()方法 >>> ...
- mysql将字符串字段转为数字排序或比大小
SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...
随机推荐
- 【原创】读写锁ReentrantReadWriteLock原理分析(一)
Java里面真正意义的锁并不多,其实真正的实现Lock接口的类就三个,ReentrantLock和ReentrantReadWriteLock的两个内部类(ReentrantReadWriteLock ...
- windows下mysql解压版安装及centos下mysql root密码忘记
windows安装 1. 下载zip版的解压后将bin添加到path. 2. 修改解压目录D:\mysql\mysql-5.7.12-winx64下的my.ini,设置路径: 还要添加 [client ...
- servlet中Session的用法
## (1)什么是Session? 服务器端为了保存用户的状态而创建的一个特殊的对象(即session对象). 当浏览器第一次访问服务器时,服务器会创建session对象(该 ...
- 基本数据类型(int,bool,str)
1.int bit_lenth() 计算整数在内存中占用的二进制码的长度 十进制 二进制 长度(bit_lenth()) 1 1 1 2 10 2 4 100 3 8 1000 4 16 10000 ...
- vue 键盘监听事件
<template> <div class="hello"> <input v-on:keyup.enter="submit" t ...
- Hadoop2.x 关于日志文件位置
查看日志是发现Hadoop问题和解决Hadoop问题的第一步. 开始我不知道该去哪找日志,后来我发现在我启动节点的时候,有打印信息以及明确告诉了日志写在哪. [root@master hadoop]# ...
- jquery 取页面中ifram中得节点
<iframe src="html/bai.jsp" frameBorder=0 id=middle name=middle scrolling="yes" ...
- js各种验证
1. var Validate = function() { //账号验证 字母,数字,下划线,不能少于6位大于20位 this.isName =function(value){ var reg = ...
- 【jQuery02】点击标题面板显示内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Solr全文检索引擎配置及使用方法
介绍 Solr是一款开源的全文检索引擎,基于lucene.拥有完善的可配置功能界面.具有丰富的查询语言,可扩展,可优化. 下载安装 进入solr官网下载包(这里我使用的版本是8.0) http://w ...