在db中,我已经存储了RegionInfo.TwoLetterISORegionName值的值。 Atm我有像'' be'比利时,' no',' gb',' en'等
如果我写:
var culture = new CultureInfo("be");
而不是比利时,我得到了白俄罗斯。
所以我需要一种从RegionInfo.TwoLetterISORegionName获取CultureInfo的方法。
答案 0 :(得分:0)
给定一个双字母区域名称,可以将多种文化与该区域名称相关联(因为在一个国家/地区可以使用多种语言)。例如瑞士有4种文化:de,fr,it,rm。
现在有些代码:
public static ILookup<string, CultureInfo> RegionToCultures()
{
// All the local cultures
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
// We "group" the cultures by their TwoLetterISORegionName
return cultures.ToLookup(x => new RegionInfo(x.LCID).TwoLetterISORegionName);
}
代码返回ILookup<string, CultureInfo>
(认为它是IDictionary<string, IEnumerable<CultureInfo>>
)。
使用它像:
var rtoc = RegionToCultures();
然后:
var switzerlandCultures = rtoc["CH"];
foreach (CultureInfo culture in switzerlandCultures)
{
Console.WriteLine(culture.EnglishName);
}
请注意,ILookup<,>
赢了如果与不存在的密钥一起使用,则会抛出异常:rtoc["aaaaa"]
只会返回一个空的IEnumerable<>