例如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中按字符串中的数字排序的更多相关文章

  1. 字符串--java中判断字符串是否为数字的方法的几种方法?

    ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  2. 在SQL中取出字符串中数字部分或在SQL中取出字符部分

    在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...

  3. java中判断字符串是否为数字的方法的几种方法

    1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...

  4. (转载)java中判断字符串是否为数字的方法的几种方法

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  5. PHP中去除字符串中的换行的方法

    在PHP中,有时候我们需要对字符串的换行进行过滤,比如天涯PHP博客中文章页面的description信息,我是直接截取的文章内容,并过滤掉html符号,最终还要过滤掉其中的换行.下面整理一下常见的去 ...

  6. PHP中取出字符串中的空格 逗号

    preg_replace("/\s| |,|,/","",$_str) PHP中取出字符串中的空格 逗号 (包括中文状态下)

  7. C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?

    C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: using System; u ...

  8. Python中去除字符串中的单个或多个空格的方法总结

    python中去除字符串中空格的方法比较多,单个看起来也都比较简单 但是使用起来容易发生混淆 为了加深记忆 将常用的去除字符串中空格的方法汇总如下 方法一:strip()方法 >>> ...

  9. mysql将字符串字段转为数字排序或比大小

    SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...

随机推荐

  1. ActiveMQ学习笔记(22)----ActiveMQ的优化和使用建议

    1. 什么时候使用ActiveMQ 1. 异步通信 2. 一对多通信 3. 做个系统的集成,同构,异构 4. 作为RPC的替代 5. 多个应用相互解耦 6. 作为事件驱动架构的幕后支撑 7. 为了提高 ...

  2. SpringCloud学习笔记(10)----Spring Cloud Netflix之声明式 REST客户端 -Feign的高级特性

    1. Feign的默认配置 Feign 的默认配置 Spring Cloud Netflix 提供的默认实现类:FeignClientsConfiguration 解码器:Decoder feignD ...

  3. 在js中关于同名变量和函数的地位争夺问题

    先上一段让大家比较蒙圈的代码,接下来再慢慢讲解 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  4. java 通过cookie判断是否登陆

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOEx ...

  5. LRU算法与LRUCache

    关于LRU LRU(Least recently used,最近最少使用)算法是操作系统中一种经典的页面置换算法,当发生缺页中断时,需要将内存的一个或几个页面置换出,LRU指出应该将内存最近最少使用的 ...

  6. LOJ #10121 与众不同 (RMQ+二分)

    题目大意 :给你一个整数序列,定义一个合法子串为子串内所有数互不相同,会有很多询问,求区间$[L,R]$内最长连续合法子串长度 一道思维不错的$RMQ$题,NOIP要是考这种题可能会考挂一片 预处理出 ...

  7. sql 技巧

    1.想把一张表的 某个字段或多个字段 的 所有数据 复制到另外一张表里  insert into 表名(字段) select (字段) from 表名 2.from Users u , IN(u.ro ...

  8. 紫书 例题 11-3 UVa 1151 (有边集的最小生成树+二进制枚举子集)

    标题指的边集是说这道题的套餐, 是由几条边构成的. 思路是先做一遍最小生成树排除边, 因为如果第一次做没有加入的边, 到后来新加入了很多权值为0的边,这些边肯定排在最前面,然后这条边的前面的那些边肯定 ...

  9. cogs 181. [USACO Jan07] 最高的牛

    181. [USACO Jan07] 最高的牛 ★★   输入文件:tallest.in   输出文件:tallest.out   简单对比时间限制:1 s   内存限制:32 MB FJ's N ( ...

  10. asp.net 缓存公共类

    using System; using System.Collections.Generic; using System.Text; using System.Web; using System.We ...