C# 从RegionInfo.TwoLetterISORegionName获取CultureInfo
在db中,我已经使用RegionInfo.TwoLetterISORegionName值存储了值。Atm我有比利时的“be”、“no”、“gb”、“en”等值 如果我写:C# 从RegionInfo.TwoLetterISORegionName获取CultureInfo,c#,cultureinfo,regioninfo,C#,Cultureinfo,Regioninfo,在db中,我已经使用RegionInfo.TwoLetterISORegionName值存储了值。Atm我有比利时的“be”、“no”、“gb”、“en”等值 如果我写: var culture = new CultureInfo("be"); 我得到的不是比利时,而是白俄罗斯 因此,我需要一种从RegionInfo.TwoLetterIsOrigionName获取CultureInfo的方法。给定一个两个字母的地区名称,有多种文化可以与该地区名称关联(因为在一个国家可以说多种语言)。例如,瑞
var culture = new CultureInfo("be");
我得到的不是比利时,而是白俄罗斯
因此,我需要一种从RegionInfo.TwoLetterIsOrigionName获取CultureInfo的方法。给定一个两个字母的地区名称,有多种文化可以与该地区名称关联(因为在一个国家可以说多种语言)。例如,瑞士有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);
}
然后:
var switzerlandCultures = rtoc["CH"];
foreach (CultureInfo culture in switzerlandCultures)
{
Console.WriteLine(culture.EnglishName);
}
请注意,ILookup
如果与不存在的密钥一起使用,则不会引发异常:rtoc[“aaaaa”]
只会返回一个空的IEnumerable
,您可以从开始,或者从一个开始。
var switzerlandCultures = rtoc["CH"];
foreach (CultureInfo culture in switzerlandCultures)
{
Console.WriteLine(culture.EnglishName);
}