当我使用下面的代码(过去工作正常)时,我现在可以使用.NET 4.6获得一个不包含纳米比亚的列表,并且在过滤之前包含Yabuuti大约50次。知道为什么或改变了什么?
private void SetCountriesComboBox()
{
RegionInfo country = new RegionInfo(new CultureInfo("en-US", false).LCID);
List countryNames = new List();
foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
country = new RegionInfo(new CultureInfo(cul.Name, false).LCID);
countryNames.Add(country.DisplayName.ToString());
}
IEnumerable nameAdded = countryNames.OrderBy(names => names).Distinct();
foreach (string item in nameAdded)
{
comboBox1.Items.Add(item);
}
}
答案 0 :(得分:6)
RegionInfo会返回有关文化的信息,而非国家/地区。没有内置的方法来返回国家(因为他们有能力不经常改变)
答案 1 :(得分:0)
许多RegionInfo
与多个CultureInfo
相关联。请参阅示例https://ideone.com/yTfO8A。例如 India 的RegionInfo
就像14 CultureInfo
一样。 瑞士的RegionInfo
有4 CultureInfo
。
请注意,您的代码是多余的:重建new CultureInfo(cul.Name, false).LCID
。更健全的东西会是:
private static void SetCountriesComboBox()
{
List<string> countryNames = new List<string>();
foreach (CultureInfo cul in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
RegionInfo country = new RegionInfo(cul.LCID);
countryNames.Add(string.Format("{0} ({1})", country.DisplayName, cul.DisplayName));
// countryNames.Add(country.DisplayName);
}
IEnumerable<string> nameAdded = countryNames.OrderBy(names => names).Distinct();
foreach (string item in nameAdded)
{
comboBox1.Items.Add(item);
}
}