C# DataTable 排序

使用DataTable的DefaultView中Sort方法排序,如果遇见数字类型就会有问题

 

 1、补齐年龄位数(不建议)

           #region 补齐年龄位数,然后排序
            foreach (DataRow item in dt.Rows)
            {
                item["Age"] = item["Age"].ToString().PadLeft(2, '0');
            }
            dt.DefaultView.Sort = "Age ASC";
            dt = dt.DefaultView.ToTable();
            #endregion    
View Code

2、增加一列,判断年龄长度然后排序

            #region 增加一列,判断年龄长度然后排序
            dt.Columns.Add("AgeLength", typeof(int), "len(Age)");
            dt.DefaultView.Sort = "AgeLength,Age ASC";
            dt = dt.DefaultView.ToTable();
            #endregion        
View Code

3、克隆表结构,将年龄列数据类型修改为数字类型

            #region 克隆表结构,将年龄列数据类型修改为数字类型
            DataTable dtNew = dt.Clone();
            dtNew.Columns[1].DataType = typeof(int);
            foreach (DataRow item in dt.Rows)
            {
                dtNew.ImportRow(item);
            }
            dtNew.DefaultView.Sort = "Age ASC";
            dtNew = dtNew.DefaultView.ToTable();
            #endregion
View Code

4、利用linq将dataTable转换为集合,然后排序

            #region 利用linq将dataTable转换为集合,然后排序
            dt = dt.Rows.Cast<DataRow>().OrderBy(r => int.Parse(r["Age"].ToString())).CopyToDataTable();
            #endregion
View Code

 

参考 https://www.jb51.net/article/43343.htm

posted on 2019-11-25 13:38  lovezj9012  阅读(709)  评论(0编辑  收藏  举报

导航