• 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;//绑定数据
  • 相关阅读:
    livereload
    XAMPP Apache 配置多端口和多域名方法
    移动端touch事件实现页面弹动--小插件
    QRCode生成二维码,jq QRCode生成二维码,QRCode生成电子名片
    下拉刷新
    js 中获取 日期
    wcf 的 知识点
    iis 发布失败原因总结
    list 用法的随手记
    字符编码的 文章推荐
  • 原文地址:https://www.cnblogs.com/joysky/p/4545732.html
Copyright © 2020-2023  润新知