zoukankan      html  css  js  c++  java
  • 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;//绑定数据
  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/joysky/p/4545732.html
Copyright © 2011-2022 走看看