从货币代码获取CultureInfo?

时间:2012-02-10 16:00:14

标签: asp.net .net

我需要为不同的货币代码获取System.Globalization.CultureInfo。

示例:欧元,英镑,美元

目前我在基于这3个字母的货币代码的switch语句中执行以下操作,显然这不是这样做的方式:

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

任何人都有一种干净的方式来代替使用货币代码获得相同的结果吗?

3 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:12)

简短:那是不可能的。例如,欧元将映射到de-DE,fr-FR,nl-NL和其他国家。从货币到文化没有映射,因为多个国家共享货币。

答案 2 :(得分:0)

我相信你在寻找

var region = new System.Globalization.RegionInfo.CurrentRegion();

http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo.aspx