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 = 0;
            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;//绑定数据
时间: 2024-12-29 06:48:51

C# DataTable中按字符串中的数字排序的相关文章

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

ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.u

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

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

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

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 5

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

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

Python中去除字符串中空格的方法

Python中去除字符串中指定字符或者空格的方法有几种: str.strip() //该方法用于去除字符串开头和结尾的指定字符或字符串(默认为空格或换行符) str.lstrip() //该方法用于截掉字符串左边的空格或指定字符 str.rstrip() //该方法用于截掉字符串右边的空格或指定字符 所以若是要去除字符串中所有的空格可以使用如下方式: str.strip().lstrip.rstrip() 原文地址:https://www.cnblogs.com/EdenChanIy/p/993

SQL中判断字符串中包含字符的方法

通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用函数:CHARINDEX和PATINDEXCHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始位置.PATINDEX:查某字符(串)是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置:如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零.特殊:可以使用通配符! 例子:1. 查询字符串中是否包含非数字字符SELECT PATINDEX('%[^0-9]%', '1235X4

Java中替换字符串中特殊字符+ 20150921

需求:今天需要将字符串中的" +"转换程"%2B",但是"+"是正则表达式中的特殊字符,使用需要反斜杠转义,具体示范: String a="123+1212+123=3123";        //将+转换成%2B        String key0=a.replaceAll("\\+","%2B");        //将+转换成%3D         key0=key0.repla

关于C#中遍历字符串中的每个字符的方法

解决方案 C#提供了两个方法用于遍历字符串. 1.第一个方法是foreach循环,这个方法快速且容易,但是与第二个方法相比它不太灵活.其使用方法如下: string testStr = "abc123"; foreach (char c in testStr) { Console.WriteLine(c.ToString()); } 2.第二个方法使用for循环而不是foreach循环来遍历字符串.例如: string testStr = "abc123"; for

Shell中判断字符串是否为数字的6种方法分享

#!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真. sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要