1

「DTStage」という DataTable が 1 つあります。「SeqNbr」と「StageID」という 2 つの列があります。

「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

このデータテーブルを並べ替えるには、次の 2 つの方法を使用しました。

 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

5 に答える 5

4

SeqNbr 列は文字列型のように見えるため、数値ではなく文字でソートされます。それらが数値の場合 (私は整数と仮定します)、DataTable で列の型を int にしないのはなぜですか?

これはあなたを助けるはずです: c# を使用してデータテーブル内の文字列項目を int としてソートします

于 2012-07-20T07:37:23.427 に答える
2

その自然な並べ替え (文字列比較)。これらが整数であることをdataTableに伝える必要があります。

于 2012-07-20T07:38:55.300 に答える
1

代わりにDTStage = dv.ToTable();使用してくださいDTStage = dv.Table;

それ以外の場合は、列を Sql テーブルの数値型としてソートする必要があります

于 2012-07-20T07:38:29.180 に答える
0

データテーブルを次のように宣言する必要があります

Datatable DTStage = new Datatable();

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

乾杯

于 2012-07-20T07:56:40.097 に答える
0

文字列を比較しているようです。それらをintに変換してみてください。

于 2012-07-20T07:57:27.840 に答える