2012-07-20 118 views
1

我有一个名为“DTStage”的DataTable。它有两列,如“SeqNbr”和“StageID”。Sorting the DataTable is not working

我想基于“SeqNbr”对数据表进行排序。

DataTable中有如下记载:

 SeqNbr   StageID 
    --------  ----------- 
     0    1 
     1    2 
     2    3 
     3    4 
     4    5 
     5    6 
     6    7 
     7    8 
     8    9 
     9    10 
     10    11 
     11    12 
     12    13 
     13    14 
     14    15 
     15    16 
     16    17 
     18    18 
     17    19 

我用两种方法来解决这DataTable中,有如下几点:

DTStage = new DataView(DTStage, "", "SeqNbr asc", DataViewRowState.CurrentRows).ToTable(); 

        & 

DataView dv = DTStage.DefaultView; 
dv.Sort = DTStage.Columns["SeqNbr"] + " asc"; 
DTStage = dv.ToTable(); 

但都给出了相同的结果如下:

 SeqNbr   StageID 
    --------  ----------- 
     0    1 
     1    2 
     10    11 
     11    12 
     12    13 
     13    14 
     14    15 
     15    16 
     16    17 
     17    19 
     18    18 
     2    3 
     3    4 
     4    5 
     5    6 
     6    7 
     7    8 
     8    9 
     9    10 

为什么这不能正常工作?如何解决这个问题呢?

回答

4

它看起来像你的SEQNBR列是字符串类型,因此它得到由字符而不是数字排序。如果这些是数字(我认为是整数),为什么不在DataTable中将列类型设置为int?

这会帮助你:Sort string items in a datatable as int using c#

1

而不是DTStage = dv.ToTable();请使用DTStage = dv.Table;

否则你将需要使列的排序为数量型你的SQL表

+0

是的。我需要将列数据类型设置为整数。谢谢.. – thevan 2012-07-20 07:54:58

2

它是一个自然排序(串比较)。你需要告诉dataTable的,那些都是整数。

+0

如何做到这一点? – thevan 2012-07-20 07:40:05

+0

这里是相同的问题和答案:http://stackoverflow.com/questions/7572685/sort-string-items-in-a-datatable-as-int-using-c-sharp – 2012-07-20 07:41:36

0

你应该delcare你的数据表作为

Datatable DTStage = new Datatable(); 

DTStage.Columns.Add("SeqNbr", typeof(int)); 

干杯

0

它看起来像它比较字符串。尝试将它们转换为int。