C# 从RegionInfo.TwoLetterISORegionName获取CultureInfo

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的方法。给定一个两个字母的地区名称,有多种文化可以与该地区名称关联(因为在一个国家可以说多种语言)。例如,瑞

在db中,我已经使用RegionInfo.TwoLetterISORegionName值存储了值。Atm我有比利时的“be”、“no”、“gb”、“en”等值

如果我写:

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);
}