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

最上面的一个提供所有文化,(但没有重复)。
示例:英语、西类牙语、菲律宾语

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

我现在使用此代码作为我的顶级列表。

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

但是它没有显示菲律宾语(菲律宾)
我宁愿不使用 GetCultures(CultureTypes.AllCultures)) 因为它一次显示太多。

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

对此有最佳实践吗?

谢谢

最佳答案

查看不同 CultureTypes 值的引用。它会告诉您每个包含的内容。

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

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

尽管似乎因为 CultureTypes 具有 flags 属性,但我们也可以在获取它们时将 SpecificCultures 屏蔽掉。
var cultures = CultureInfo.GetCultures(
    CultureTypes.AllCultures & ~CultureTypes.SpecificCultures
);

关于c# - 如何制作所有文化的下拉列表(但不重复),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5956898/

10-17 02:18