我有一些存储在DataTable中的数字代码.当我尝试使用DataView对其进行排序时,它按字符串对列进行排序.将数据排序为整数/数字的最简单方法是什么?
DataView view = dt.DefaultView();
view.Sort = "Code asc";
dt = view.ToTable();
Run Code Online (Sandbox Code Playgroud)
数据表中的数据:128,123,112,12,126
排序后显示:112,12,123,126,128
预期结果:12,112,123,126,128
SaQ*_*QiB 11
这是一个有效的例子.您可以通过克隆创建另一个DataTable,并将列的数据类型更改为Int并复制数据.
DataTable dt = GetTable(); // Assume this method returns the datatable from service
DataTable dt2 = dt.Clone();
dt2.Columns["Code"].DataType = Type.GetType("System.Int32");
foreach (DataRow dr in dt.Rows)
{
dt2.ImportRow(dr);
}
dt2.AcceptChanges();
DataView dv = dt2.DefaultView;
dv.Sort = "Code ASC";
Run Code Online (Sandbox Code Playgroud)
小智 5
一种选择是添加具有正确类型的计算列并对其进行排序。
像这样:
dt.Columns.Add( "Int32_Code", typeof( int ), "Code" );
dt.DefaultView.Sort("Int32_Code");
dt = dt.DefaultView.ToTable();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27336 次 |
| 最近记录: |