我正在尝试制作 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/