2012-02-10 6 views
7

異なる通貨コードのSystem.Globalization.CultureInfoを取得する必要があります。通貨コードからCultureInfoを取得しますか?

例:EUR、GBP、現在、私はこの3文字の通貨コードに基づいて、switchステートメント内で次のことをやっているUSD

、明らかにこれはそれを行うための方法ではありません。

var ci = new System.Globalization.CultureInfo("en-US"); 

誰でも、代わりに通貨コードを使用して同じ結果を達成するためのきれいな方法がありますか?

+1

同じ通貨の複数の文化がある場合、どのような文化をEURから得ることができますか? –

+0

多くの文化は通貨を共有しています。どうやってこれを地図にしますか? EURはどのようにマップされますか? – tdammers

+1

私の質問に答えると思いますが、FR-FRが欲しいので、私が望む結果のためのルックアップテーブルを作成する必要があります - ありがとうジョンスコット! – Slee

答えて

12

ショート:これはできません。例えば、EURはde-DE、fr-FR、nl-NLなどの国に対応します。複数の国が通貨を共有しているため、通貨から文化へのマッピングはありません。

16
static IEnumerable<CultureInfo> GetCultureInfosByCurrencySymbol(string currencySymbol) 
{ 
    if (currencySymbol == null) 
    { 
     throw new ArgumentNullException("currencySymbol"); 
    } 

    return CultureInfo.GetCultures(CultureTypes.SpecificCultures) 
     .Where(x => new RegionInfo(x.LCID).ISOCurrencySymbol == currencySymbol); 
} 

を探して

foreach (var culture in GetCultureInfosByCurrencySymbol("GBP")) 
{ 
    Console.WriteLine(culture.Name); 
} 

プリント信じる:

cy-GB 
gd-GB 
en-GB 
+0

私が必要としたのは、ISOコード(「GBP」)と使用する場所の数(2)の間のルックアップでした。私はちょうど最初の文化を取り、culture.NumberFormat.CurrencyDecimalDigitsを使用して起動時にルックアップを作成しました。これは、通貨を共有するすべての文化が同じ場所で12ヶ所の場所を使用していることを前提としています。これは私のポルポイズの十分な前提です。 –

関連する問題