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

时间:2011-09-27 16:42:38

标签: c# sorting

我在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

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

像这样:

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

答案 3 :(得分:0)

在数据表中创建一个新列,如下所示,并在新列 code_int 上排序 Dt.Columns.Add("Code_int", typeof(Int16), "Convert(Code, 'System.String')");