转换smallint到int的Datarow字段扩展方法

时间:2012-04-30 13:45:22

标签: c# sql-server int extension-methods field

我在SQL Server中有smallint类型的列。我读了Ado.net包含这个字段的行。

当我获得该SQL Server行的DataRow时,我尝试将其转换为整数,如下面的代码:

int value = datarow.Field<int>("myColumnName");

因为字段为smallint,我认为我应该转换为int。但它抛出一个例外说

  

指定演员表无效.....

我不想使用Convert.ToInt32或其他功能。我想使用Datarow的字段扩展方法。我怎么能这样做?
修改

datarow.Field<int>("myColumnName"); // doesnt work
datarow.Field<Int16>("myColumnName"); // doesnt work
datarow.Field<short>("myColumnName"); // doesnt work
Convert.ToInt32(datarow["myColumnName"]) // works but i dont want it

2 个答案:

答案 0 :(得分:3)

请参阅SQL Server Data Type Mappings (ADO.NET)

SMALLINT是SQL Server中的16位整数,因此它映射到.NET中的Int16

因此,您应该使用

Int16 value = datarow.Field<System.Int16>("MyColumnName")

读取值

答案 1 :(得分:0)

使用, datarow.Field&LT;字节&GT;(&#34; myColumnName&#34);