指定的强制转换无效-bigint到long-C#

指定的强制转换无效-bigint到long-C#,c#,.net,sql-server,C#,.net,Sql Server,我试图将sq server表中的bigint数据映射到c#long变量。我相信这是绘制地图的正确方法 long id = (long)ds.Tables[2].Rows[0].ItemArray[0]; 我也尝试了下面的建议 long id = (long)(double)ds.Tables[2].Rows[0].ItemArray[0]; 通过以上两种方法,我得到以下错误: System.InvalidCaseException : Specified cast is not valid.

我试图将sq server表中的bigint数据映射到c#long变量。我相信这是绘制地图的正确方法

long id = (long)ds.Tables[2].Rows[0].ItemArray[0];
我也尝试了下面的建议

long id = (long)(double)ds.Tables[2].Rows[0].ItemArray[0];
通过以上两种方法,我得到以下错误:

System.InvalidCaseException : Specified cast is not valid.
如果您想知道它包含什么数据,它是“1”

Convert.toInt64让它工作了。谢谢大家

你只是在隐瞒一个更大的问题。DataSet
ds
中保存的c#DataTable对象列中的数据类型可能设置不正确。您需要设置表,以便将的列属性设置为
Int64

Convert.toInt64让它工作了。谢谢大家


你只是在隐瞒一个更大的问题。DataSet
ds
中保存的c#DataTable对象列中的数据类型可能设置不正确。您需要设置表,以便将的列的属性设置为
Int64

尝试调用对象上的GetType()以查看类型是的,我怀疑您查看的列不是您认为的列。我们相信它具有正确的数据,它不是您期望的类型。
ds.Tables[2].Rows[0].ItemArray[0].GetType()
返回什么?@ZoharPeled如果int被装箱到对象中,显式强制转换将不起作用。第9行有效,第10行失败。@TomTom-这正是…尝试调用对象上的GetType()以查看类型是的,我怀疑您查看的列不是您认为的列。我们相信它具有正确的数据,它不是您期望的类型。
ds.Tables[2].Rows[0].ItemArray[0].GetType()
返回什么?@ZoharPeled如果int被装箱到对象中,显式强制转换将不起作用。第9行正常,第10行失败。@TomTom-这正是…你说的设置表格是什么意思?您是说我需要更改sql表中的数据类型吗?不,您需要将数据表配置为将列视为Int64。尝试在数据库中存储一个大于2^32的数字,您当前的设置将出现错误。设置表格是什么意思?您是说我需要更改sql表中的数据类型吗?不,您需要将数据表配置为将列视为Int64。尝试在数据库中存储大于2^32的数字,您当前的设置将出错