使用 LINQ 来自 RegionInfo 的 CultureInfo

问题描述 投票:0回答:2

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

我正在尝试收集所有特定文化的列表并获取其相应的 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() 语句期间不断抛出异常,错误如下;

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

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

我是不是做了什么蠢事?

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

c# linq globalization
2个回答
11
投票

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


0
投票

我遇到了同样的问题,x.Name 解决了问题!

© www.soinside.com 2019 - 2024. All rights reserved.