我有一个名为“DTStage”的DataTable。它有两列,如“SeqNbr”和“StageID”。
我想基于“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
我使用了两种方法对这个数据表进行排序,它们如下:
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
为什么这不能正常工作?如何解决这个问题?
答案 0 :(得分:4)
看起来您的SeqNbr列是字符串类型,因此它按字符而不是数字排序。如果这些是数字(我假设整数)为什么你不在DataTable中将列类型作为int?
答案 1 :(得分:2)
它是一种自然排序(字符串比较)。你需要告诉dataTable那些是整数。
答案 2 :(得分:1)
请使用DTStage = dv.ToTable();
DTStage = dv.Table;
否则你需要在Sql表
上将列作为数字类型答案 3 :(得分:0)
您应该将数据表声明为
Datatable DTStage = new Datatable();
DTStage.Columns.Add("SeqNbr", typeof(int));
干杯
答案 4 :(得分:0)
看起来它正在比较字符串。尝试将它们转换为int。