使用c#将数据表中的字符串项排序为int

我有一些存储在DataTable中的数字代码。 当我尝试使用DataView对其进行排序时,它按字符串对列进行排序。 将数据排序为整数/数字的最简单方法是什么?

DataView view = dt.DefaultView(); view.Sort = "Code asc"; dt = view.ToTable(); 

数据表中的数据:128,123,112,12,126

排序后显示:112,12,123,126,128

预期结果:12,112,123,126,128

这是工作的例子。 您可以通过克隆创建另一个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"; 

在数据表中创建列时,将其定义为typeof(int)

 dt.Columns.Add("Code", typeof(int)); 

一种选择是添加一个具有正确类型的计算列并对其进行排序。

像这样:

 dt.Columns.Add( "Int32_Code", typeof( int ), "Code" ); dt.DefaultView.Sort("Int32_Code"); dt = dt.DefaultView.ToTable();