如何制作所有文化的下拉列表(但没有重复)

时间:2011-05-10 21:47:04

标签: c# asp.net globalization cultureinfo

我正在尝试制作2个下拉列表。

最高层提供所有文化,(但没有重复)。 示例:英语,西班牙语,菲律宾语

从顶部列表中选择后,底部列表将显示任何特定类型。

我现在将此代码用于我的首选列表。

foreach (CultureInfo cultureInfo in CultureInfo.GetCultures(CultureTypes.NeutralCultures))

然而,它没有显示菲律宾人(菲律宾) 我宁愿不使用GetCultures(CultureTypes.AllCultures)),因为它一次显示太多。

似乎我可能需要将NeutralCultures加载到IList中。 然后遍历AllCultures以确保它的ThreeLetterISOLanguageName在列表中,如果没有添加它。

这是最好的做法吗?

由于

1 个答案:

答案 0 :(得分:17)

查看不同CultureTypes值的参考。它告诉你每个包含的内容。

我想你想要除了特定文化之外的所有东西?您可以将所有非特定文化组合成一组或获取所有文化并排除特定文化。第二种方法最容易在LINQ中表达:

var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
                          .Except(CultureInfo.GetCultures(CultureTypes.SpecificCultures));

虽然看起来因为CultureTypes有flags属性,我们也可以在获取它们时屏蔽SpecificCultures

var cultures = CultureInfo.GetCultures(
    CultureTypes.AllCultures & ~CultureTypes.SpecificCultures
);