型のないDataColumnに入っている数値データを、DataTable.Sort()でソートしようとすると辞書順にソートされてしまうため一手間必要です。
- ソートしたいDataTableをDataView.Tableとして持たせる
- そのTableに数値の列を追加する(今回はdouble)
- 数値としてソートしたい列を数値に変換し2.で作成した列に与える
- 3.の列でソート
- もう3.の列は不要なので削除
- DataViewをDataTableに戻して終了
以下、コード
// DataTable dataTable;
DataView dataView = new DataView(dataTable);
dataView.Table.Columns.Add("num", typeof(double));
dataView.Table.Columns["num"].Expression = "CONVERT(" + columnWantedToSort + " , 'System.Double') ";
dataView.Sort = "num";
dataView.Table.Columns.Remove("num");
DataTable sortedTable = dataView.ToTable();
本当にこんなことしないといけないんですか?