C # по умолчанию определяет формат строки double / float для американского английского - PullRequest
0 голосов
/ 12 апреля 2010

У меня есть несколько тысяч строк исходного кода веб-приложения, изначально написанного для системы разработки в США, для поддержки. Он интенсивно использует строки операторов SQL, которые объединяются на лету, например

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

Не комментируйте плохой стиль программирования, это не поможет мне в этом случае:)

Суть: моя система использует немецкий язык, который, в свою очередь, приводит к неправильным операторам SQL, например:

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

(обратите внимание на запятую в качестве десятичного разделителя вместо точки).

Вопрос: Какой самый «элегантный» способ изменить язык веб-приложения в данном случае) на США или Великобританию, чтобы предотвратить принудительное изменение и проверку каждой отдельной строки кода? .NET 3.5 не вариант (дал бы мне возможность перезаписать ToString() в классе расширения.)

Ответы [ 3 ]

6 голосов
/ 12 апреля 2010

Вам не нужно использовать метод расширения, просто используйте ToString с IFormatProvider:

string SQL = "select * from table where double_value = " 
      + Math.Round(double_value, 2).ToString(CultureInfo.InvariantCulture);
1 голос
/ 12 апреля 2010

Сразу после формирования вопроса я нашел ответ.

Вот оно (будет добавлено в web.config):

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

Спасибо

1 голос
/ 12 апреля 2010

Вам необходимо использовать форматировщик строки с заданной по умолчанию культурой en-US (или другой культурой, которая использует. Вместо десятичного разряда).

См: http://msdn.microsoft.com/en-us/library/1ksz8yb7.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...