2010-04-12 3 views
0

J'ai plusieurs milliers de lignes d'un code source d'application web, initialement écrit sur un système de développement américain, à maintenir. Il fait un usage intensif des chaînes d'instructions SQL, qui sont combinées à la volée, par ex.C# définir le format chaîne de double/floats pour être US anglais par défaut

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

Ne pas commenter le style de programmation mauvaise, qui ne m'a pas aidé dans ce cas :)

Le point crucial: Mon système utilise un paramètre régional allemand, qui à son tour conduit à de mauvaises instructions SQL, comme ceci:

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

(Notez la virgule comme séparateur décimal au lieu d'un point). Question: Quelle est la manière la plus "élégante" de changer les paramètres régionaux de l'application Web dans ce cas) pour les États-Unis ou le Royaume-Uni afin d'éviter d'être obligé de changer et d'inspecter chaque ligne de code? .NET 3.5 n'est pas une option (cela me donnerait la chance d'écraser ToString() dans une classe d'extension.)

+0

Ce n'est pas mauvais style de programmation, qui est un style de programmation horrible. –

+0

Je vous recommande fortement d'en faire une procédure stockée et de passer votre valeur arrondie en tant que paramètre numérique, pas une chaîne. –

+1

@neil: Vous devez marquer la réponse qui vous aide le plus en cliquant sur la petite "case à cocher" à proximité. Veuillez le faire pour vos autres questions (répondues). (Cela permettra également aux gens d'être plus disposés à vouloir vous aider et à répondre à vos questions de façon réfléchie ...) –

Répondre

1

droit après avoir formé la question que je trouve la réponse.

Ici, il est (à ajouter à web.config):

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

Merci

+1

Veuillez noter que cela affectera tout ce qui est lié à la langue dans votre application, y compris l'interface utilisateur. –

6

Vous n'avez pas besoin d'utiliser une méthode d'extension, il suffit d'utiliser ToString avec un IFormatProvider:

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