C# 获取 RegionInfo, TwoLetterISORegionName, 通过瑞典国家名称

C# get RegionInfo, TwoLetterISORegionName, by Swedish country name

我需要获取国家/地区的两个字母 ISO 区域名称,ISO 3166 - ISO 3166-1 alpha 2。我的问题是我只有瑞典语的国家/地区名称,例如 Sverige 表示 SwedenTyskland 表示 Germany。是否可以仅从这些信息中获取 RegionInfo?我知道英文国家名是可以的。

作品:

var countryName = "Sweden";
//var countryName = "Denmark";
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID));
var englishRegion = regions.FirstOrDefault(region => region.EnglishName.Contains(countryName));
var twoLetterISORegionName = englishRegion.TwoLetterISORegionName;

尝试与 NativeName 进行比较:

string nativeName = "Sverige"; // Sweden

var region = CultureInfo
    .GetCultures(CultureTypes.SpecificCultures)
    .Select(ci => new RegionInfo(ci.LCID))
    .FirstOrDefault(rg => rg.NativeName == nativeName);

Console.Write($"{region.TwoLetterISORegionName}");

编辑: 看来我们真的想通过它的瑞典语名称找出RegionInfo实例

  Sverige  -> Sweden
  Tyskland -> Germany
  ...

在这种情况下,我们应该使用 DisplayName 而不是 NativeName:

string swedishName = "Sverige"; // Sweden

var region = CultureInfo
    .GetCultures(CultureTypes.SpecificCultures)
    .Select(ci => new RegionInfo(ci.LCID))
    .FirstOrDefault(rg => rg.DisplayName == swedishName);

我们应该确保我们使用 localized .Net

The DisplayName property displays the country/region name in the language of the localized version of .NET Framework. For example, the DisplayName property displays the country/region in English on the English version of the .NET Framework, and in Spanish on the Spanish version of the .NET Framework.