在很多时候,我们做datatable排序的时候,在string类型 需要进行数字转换在排序的时候,就不能用自带的,dtTemplate.DefaultView.Sort办法,这时候的排序需要先转换类型,在进行排序。 下面介绍几种转换类型后排序的方法: 第一种: public DataTable LinqSortDataTable(DataTable tmpDt) { DataTable dtsort = tmpDt.Clone(); dtsort = tmpDt.Rows.Cast<DataRow>().OrderBy(r => r["villagecode"].ToDecimal()).CopyToDataTable(); return dtsort; } 第二种: public DataTable LinqSortDataTable(DataTable tmpDt) { int sortId = 3 DataView dv = tmpDt.DefaultView; var query = (from item in tmpDt.AsEnumerable() orderby (item[sortId].ToDecimal()) select item); dv = query.AsDataView(); return dv.ToTable(); } 当然还有第三种: 这个方法 这个字段 必须提前转好类型,如果类型正确就没事, public DataTable LinqSortDataTable(DataTable tmpDt) { dtTemplate.DefaultView.Sort = " villagecode asc "; return dtTemplate.DefaultView.ToTable(); } 效率比较,在本地使用1000行左右。数据 测试。同样条件下,三方法数据字段类型正确。。。 效率,第一与第三最快。 第二种办法LINQ应该在数据量大的时候才会起到效果。。
标签:DefaultView,LinqSortDataTable,C#,tmpDt,排序,dtTemplate,DataTable From: https://www.cnblogs.com/leon1128/p/17822928.html