我需要为不同的货币代码获取System.Globalization.CultureInfo。
示例:欧元,英镑,美元
目前我在基于这3个字母的货币代码的switch语句中执行以下操作,显然这不是这样做的方式:
var ci = new System.Globalization.CultureInfo("en-US");
任何人都有一种干净的方式来代替使用货币代码获得相同的结果吗?
答案 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