Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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# 将带逗号的double转换为带点的变量,以便在sql语句中使用_C# - Fatal编程技术网

C# 将带逗号的double转换为带点的变量,以便在sql语句中使用

C# 将带逗号的double转换为带点的变量,以便在sql语句中使用,c#,C#,我在select语句中使用double: 代码: SqlCommand-command=new-SqlCommand(“从“+table+”中选择min(分数),其中[“+sportEvent+”]它应该是11.34才能工作(点而不是逗号) 如何将双精度11,34更改为11.34?您可以尝试将变量更改为字符串: result.ToString().Replace(',','.'); 这将用点替换逗号。您可以使用此选项 result.ToString(CultureInfo.InvariantC

我在select语句中使用double:

代码:

SqlCommand-command=new-SqlCommand(“从“+table+”中选择min(分数),其中[“+sportEvent+”]<(@result);”,connect);
command.Parameters.AddWithValue(“@result”,result);
如果double result是整数,则一切正常,但如果result是逗号,则一切正常(示例11,34)-->它应该是11.34才能工作(点而不是逗号)


如何将双精度11,34更改为11.34?

您可以尝试将变量更改为字符串:

result.ToString().Replace(',','.');
这将用点替换逗号。

您可以使用此选项

result.ToString(CultureInfo.InvariantCulture)

代码似乎将字符串参数设置为数值类型DB值的约束,让数据库进行转换。这不是一个好主意,因为它剥夺了您程序的控制权:如果DBA决定重新配置后端数据库以“理解”逗号而不是点,您的程序将停止工作

目前,您的
double
采用特定于区域设置的格式。您需要使用特定于语言环境的格式提供程序对其进行解析,然后将从解析器返回的值设置为SQL查询的参数。假设当前区域性使用逗号作为小数分隔符,则可以执行以下操作:

command.Parameters.AddWithValue(
    "@result"
,   double.Parse(s, CultureInfo.CurrentCulture)
);

如果结果为双倍,则:

command.Parameters.Add("@result", SqlDbType.Float).Value = result

作为参数值添加的变量
result
的数据类型是什么?result的数据类型是doubleA
double
本身没有
-它只是一个数字。如果
result
是一个
double
变量,那么您的问题是填充该变量,可能是一个
double.TryParse
Convert.ToDouble
。你能给我们看一下代码吗?请分享你的代码并告诉我你是否在你的项目中使用本地化?当
结果
11.34
时,你会得到什么错误?我得到了一个错误
方法“toString”没有重载,需要1个参数
command.Parameters.Add("@result", SqlDbType.Float).Value = result