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