Как создать раскрывающийся список всех культур (но не повторений)
Я пытаюсь сделать 2 раскрывающихся списка.
В верхней части представлены все культуры (но нет повторов).
Пример: английский, испанский, филиппинский
После выбора из верхнего списка нижний список отобразит любые конкретные типы.
Я сейчас использую этот код для своего верхнего списка.
foreach (CultureInfo cultureInfo in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
Однако он не показывает филиппинский (Филиппины)
Я бы предпочел не использовать GetCultures (CultureTypes.AllCultures)), потому что он показывает слишком много сразу.
Кажется, мне может понадобиться загрузить NeutralCultures в IList.
Затем перейдите через AllCultures, чтобы убедиться, что в списке указано значение ThreeLetterISOLanguageName, если не добавить его.
Есть ли наилучшая практика для этого?
Спасибо
Ответы
Ответ 1
Посмотрите на ссылку для различных значений CultureTypes
. Он сообщает вам, что включено для каждого.
Я думаю, вы хотите все, что угодно, кроме специфических культур? Вы можете объединить все неспецифические культуры в набор или получить все культуры и исключить конкретные. Второй подход легче всего выразить в LINQ:
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Except(CultureInfo.GetCultures(CultureTypes.SpecificCultures));
Хотя кажется, что поскольку CultureTypes
имеет атрибут flags, мы также могли бы просто маскировать SpecificCultures
при их получении.
var cultures = CultureInfo.GetCultures(
CultureTypes.AllCultures & ~CultureTypes.SpecificCultures
);