2010-04-12 57 views
0

我有几千行Web应用程序源代码,最初写在美国开发系统上,要维护。它大量使用SQL语句字符串,这些字符串在运行时即可组合,例如,C#定义double/float的字符串格式默认是美式英语

string SQL = "select * from table where double_value = " + Math.Round(double_value, 2); 

不要坏的编程风格的注释,这并不能帮助我在这种情况下:)

症结:我的系统使用德语语言环境中,从而导致错误的SQL语句,像这样:

"select * from table where double_value = 15,5" 

(注意逗号是小数点分隔符而不是一个点)。

问题:为了防止被迫更改和检查每一行代码,什么是在这种情况下最优雅的方式来更改Web应用程序的语言环境?)到美国还是英国? .NET 3.5不是一个选项(会让我有机会覆盖扩展类中的ToString())。

+0

这不是坏事编程风格,这是可怕的编程风格。 – 2010-04-12 19:10:20

+0

我强烈建议使这个存储过程,并将您的四舍五入的值作为数字参数,而不是字符串。 – 2010-04-12 19:13:23

+1

@neil:您应该点击附近的小“复选标记”标记最能帮助您的答案。请为你的其他(回答)问题做这个。 (这也会使人们更愿意并且热切地帮助你并且深思熟虑地回答你的问题......) – 2010-04-12 19:26:39

回答

1

右后已经形成我找到了答案的问题。

这(被添加到web.config中):

<configuration> 
<system.web> 
    <globalization culture="en-US"/> 
</system.web> 
</configuration> 

感谢

+1

请记住,这将影响你的应用中的所有语言,包括UI。 – 2010-04-12 19:20:22

6

你并不需要使用扩展方法,只要使用ToString用的IFormatProvider:

string SQL = "select * from table where double_value = " 
     + Math.Round(double_value, 2).ToString(CultureInfo.InvariantCulture);