来自 RegionInfo 的 CultureInfo 使用 LINQ

Rya*_*ves 6 c# linq globalization

需要一些帮助,因为这让我发疯,我不知道我是否在做一些愚蠢的事情。

我正在尝试收集所有特定文化的列表并获取它们相应的 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;
}
Run Code Online (Sandbox Code Playgroud)

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

附加信息:文化 ID 4096 (0x1000) 是中性文化;无法从中创建区域。

导致该问题的相关文化是 aa-ER。如您所见,我已根据 IsNeutralCulture 布尔值过滤了列表,因此网络框架不认为这种文化是中性的,但错误却另有说明。

我在做蠢事吗?

编辑:有趣的是,第一条评论让我在不同的机器上测试它,这不会在相同的文化上引发错误。看起来是机器问题。

Rya*_*ves 7

好的,作为解决此问题的方法,我更改了 Select 语句以初始化 x.Name 而不是 x.LCID 的 RegionInfo,这已经奏效了。不知道为什么 LCID 会失败,但是这个解决方案可以。