编程语言
首页 > 编程语言> > c#-使用LINQ从RegionInfo获得CultureInfo

c#-使用LINQ从RegionInfo获得CultureInfo

作者:互联网

需要一些帮助,因为这使我发疯,我无法判断我是否在做愚蠢的事情.

我正在尝试收集所有特定文化的列表,并获取它们对应的RegionInfo.我试图从该列表中获取与参数提供的国家/地区相对应的区域.我正在通过LINQ尝试这样做,如下所示;

public RegionInfo getregion(string country)
{
    RegionInfo thisregion;
    List<RegionInfo> regions = new List<RegionInfo>();
    CultureInfo[] allregions = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
    regions.AddRange(allregions.Where(x => !x.IsNeutralCulture).Select(x => new RegionInfo(x.LCID)));
    thisregion = regions.FirstOrDefault(region => region.EnglishName == country);
    return thisregion;
}

这个特殊的函数在Select()语句期间不断抛出异常,以下错误;

Additional information: Culture ID 4096 (0x1000) is a neutral culture;
a region cannot be created from it.

引起问题的文化是aa-ER.如您所见,我已经基于IsNeutralCulture布尔值过滤了列表,因此网络框架不认为这种文化是中立的,但是错误却相反.

我在做蠢事吗?

编辑:有趣的是,第一个评论使我在不同的计算机上对其进行了测试,而这并没有在相同的区域性上引发错误.看起来像是机器问题.

解决方法:

确定,因此,作为解决此问题的方法,我将Select语句更改为初始化x.Name而不是x.LCID的RegionInfo,并且此方法已经奏效.不知道为什么LCID失败,但是此解决方案可以.

标签:globalization,linq,c
来源: https://codeday.me/bug/20191026/1939042.html