Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这是什么类型的:ISNULL(SUM(COALESCE(a.currency,0)),0)_C#_.net_Sql_Visual Studio - Fatal编程技术网

C# 这是什么类型的:ISNULL(SUM(COALESCE(a.currency,0)),0)

C# 这是什么类型的:ISNULL(SUM(COALESCE(a.currency,0)),0),c#,.net,sql,visual-studio,C#,.net,Sql,Visual Studio,我有以下sql查询: Sql += " SELECT ISNULL(SUM(COALESCE (a.currency, 0)), 0) AS monthCurrency FROM IW_Awards AS a "; 查询工作正常,在提交查询后,我尝试在C#中转换此值,但找不到它是什么类型 我试过int,int?还有绳子。当我尝试转换为字符串时,出现以下错误消息: 无法将“System.Decimal”类型的对象强制转换为“System.St

我有以下sql查询:

Sql += " SELECT     ISNULL(SUM(COALESCE (a.currency, 0)), 0) AS monthCurrency              
FROM          IW_Awards AS a ";
查询工作正常,在提交查询后,我尝试在C#中转换此值,但找不到它是什么类型

我试过int,int?还有绳子。当我尝试转换为字符串时,出现以下错误消息: 无法将“System.Decimal”类型的对象强制转换为“System.String”类型

当我试着把它转换成Int或Int?我得到: 指定的强制转换无效

数据库:SQL IDE:VisualStudio2010 数据库接口:LINQ(但我正在创建自己的查询) 服务器端语言:C#


谢谢你的帮助。

你试过十进制吗?它告诉您,当您试图将System.Decimal转换为字符串时,它试图将其转换为字符串


它将返回任何类型的货币。

听起来像是十进制。这就是错误消息告诉您的,您试图将十进制转换为字符串。

什么类型的货币?我认为这可能是错误消息中的十进制数据类型


出于好奇,为什么要使用coalesce和isnull?由于您已将所有空值更改为0,因此不需要外部为空。

如果数据库中的货币为int,则使用
转换.ToInt32
。另一个选项是使用
System.Data
命名空间中的
myTable.Rows[0].Field(“monthCurrency”)
。问题是,有时即使您从SqlServer返回一个int,.NET仍然认为它是一个小数。

根据指定它无法从
系统转换的错误消息,我觉得结果是一个
小数,但是我想将其添加到CLR-SQL类型映射文档中(非常有用的链接)。

如果表中没有行,即使使用内部COALESCE,您仍然会得到一个NULL。a.currency在SQL中是十进制(4,0),它修复了我知道的问题,谢谢:)@tomh。我想这是真的,但我个人不习惯查询没有记录的表。在这种情况下,您应该保持一致,并使用coalesce两次或isnull两次。@gbn:um,他的代码不包括GROUPBY。因此,您将得到一个空行。我的评论是对HLGEM的回应。如果我一直在回复你的评论,那么我会这么说。如果不清楚的话,我很抱歉。@Tom H:呃,我错了。很抱歉给我的备忘录:发布前阅读并理解