我从我的数据库中获得一个NULL列的数据表。默认情况下,数据类型是Int32。 如果我改变了数据类型像下面这样说的:null列更改数据类型
不能更改列的数据类型,一旦有数据
_object.datatable.Columns[coll].DataType = typeof (decimal);
有没有办法让列小数或改变代码中的数据类型?
我从我的数据库中获得一个NULL列的数据表。默认情况下,数据类型是Int32。 如果我改变了数据类型像下面这样说的:null列更改数据类型
不能更改列的数据类型,一旦有数据
_object.datatable.Columns[coll].DataType = typeof (decimal);
有没有办法让列小数或改变代码中的数据类型?
您无法将整列自动转换为新的datatytpe。
decimal dec = (decimal)(int)_object.datatable[rownum][col1];
注:
吧的时候读它你可以将一个特定的值,如果实际值是一个Int32,你需要通过铸造为int,然后才能转换为十进制拆箱它。
他有另一个问题(现在删除),他试图将3.11填充到整数列中。问题不在于读取存储。 – 2012-02-29 14:41:02
我偶然发现了好几次。
您有三种选择。
自己创建的列
var table = new DataTable();
table.Columns.Add("id", typeof(int));
table.Columns.Add("col1", typeof(decimal));
DataAdapter.Fill(table);
如果您使用DataAdapter或DataReader的填写表格,列才会自动如果你还没有自己以前做过创建
如果您需要关系的其他数据类型,只需添加表达式列
table.Columns.Add("col1_decimal", typeof(decimal), "col1");
该列将是只读的,但是只适用于关系工作。
添加另一列,复制数据,删除第一列,重命名新的
table.Columns.Add("tmp", typeof(decimal));
foreach(var row in table.Rows())
row["tmp"] = row["col1"];
table.Columns.Remove(table.Columns["col1"]);
table.Columns["tmp"].ColumnName = "col1";
这可能是许多行的性能瓶颈。
好的,谢谢我需要一个关系,所以会增加表达 – user982129 2012-02-29 14:55:30
这张桌子从哪里来?你在建立记忆吗?如果是这样,请更改构建它的类型。你从数据库结果中得到它吗?如果你是,你确定它适合给它一个不同的类型? (如果是这样,是否更适合在数据库中进行更改。) – 2012-02-29 14:37:02
我正在从存储过程获取数据表。我需要在用户界面中的空白列,所以得到一个像NULL'AS'测试' – user982129 2012-02-29 14:38:31
如果你需要一个空白列,你不能简单地添加一个适当的类型。 'table.Columns.Add(“Test”,typeof(decimal));' – 2012-02-29 14:39:53