c# - 无法将 bigint 拆箱到 long

标签 c# asp.net .net sql-server

首先请原谅我的英语。我收到这个错误__ 当我尝试将对象从 executescalar() 显式转换为 long 时,它给出了 can not unbox executescalar() 到 long 。

虽然在转换为 System.Decimal 类型时没有错误。

long? id = (long?)ppwDb.ExecuteScalar(ppwDbCmd); //RAISE eXCEPTION
decimal? id = (decimal?)ppwDb.ExecuteScalar(ppwDbCmd);***// NO eXCEPTION

AND 的 id 值为 (id = 9874563) ,表示远距离。

最佳答案

你必须投两次:

long? id = (long?) (decimal?) ppwDb.ExecuteScalar(ppwDbCmd);

第一次转换将拆箱 decimal?。第二次转换将执行从 decimal?long? 的转换。您不能跳过第一个转换,因为 decimal? 不能拆箱为 long?

这假定 ppwDb.ExecuteScalar(ppwDbCmd) 返回 object 但返回的实际值是 decimal?

但是,我怀疑如果 id 为 null,ppwDb.ExecuteScalar(ppwDbCmd) 会返回 DBNull.Value。在这种情况下,您将不得不对该值进行特殊处理:

object result = ppwDb.ExecuteScalar(ppwDbCmd);
long? id = result != DBNull.Value ? (long?) (decimal) result : null;

关于c# - 无法将 bigint 拆箱到 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490683/

相关文章:

c# - 如何用两个具有相同键的不同字典中的值构建新词典

c# - 错误 CS0832 表达式树不能包含赋值运算符

c# - 从 Asp.Net Core 中的 web.config 读取环境变量

c# - 是否有可以与传入的 KeyEventArgs 匹配的热键的 .NET 类?

C# Cookie - Expires 属性不会设置

c# - 在 Microsoft Ink 中分隔线条

c# - 使用 LINQ 在 C# 中查找包含特定字符串并修改其值的属性

jquery - 使用 jquery、mvc3 和 html5 在 asp.net 中上传和处理带有进度条的文件

c# - 使用 JObject 所需的库名称是什么?

.net - 未处理通过 MSMQ 的较大 WCF 消息