在db中,我已经存储了带有RegionInfo.TwoLetterISORegionName值的值。我有比利时的“be”、“no”、“gb”、“en”等价值观。
如果我写:
var culture = new CultureInfo("be");我不是比利时,而是白俄罗斯。
因此,我需要一个从CultureInfo获得RegionInfo.TwoLetterISORegionName的方法。
发布于 2018-05-25 06:31:55
给定两个字母的区域名称,有多种文化可以与该区域名称相关联(因为在一个国家可以使用多种语言)。例如,瑞士有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<>。
https://stackoverflow.com/questions/50506507
复制相似问题