使用LINQ从RegionInfo中获取CultureInfo

本文关键字:获取 CultureInfo RegionInfo LINQ 使用 | 更新日期: 2023-09-27 18:02:57

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

我正试图收集所有特定文化的列表并获得相应的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()语句期间一直抛出异常,下面是error;

附加信息:培养ID 4096 (0x1000)是中性培养;

不能创建新区域。

导致问题的文化是aa-ER。正如您所看到的,我已经根据IsNeutralCulture布尔值过滤了列表,因此net框架不认为这个文化是中性的,但错误却显示了相反的情况。

我做了什么蠢事吗?

编辑:有趣的是,第一条注释让我在不同的机器上测试它,这并没有在相同的文化中抛出错误。好像是机器故障

使用LINQ从RegionInfo中获取CultureInfo

OK,因此作为此问题的解决方案,我更改了Select语句以初始化x.d name而不是x.d lcid的RegionInfo,这已经起作用了。不知道为什么LCID会失败,但是这个解决方案可以。