Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CultureInfo.GetCultures() / 7 сообщений из 7, страница 1 из 1
28.12.2012, 09:05
    #38095720
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
Странное дело, получаю список культур мультур и в параметрах указываю все культуры за исключением нейтральных. Но когда начинаю просматривать список оказывается, что нейтральные там спокойно присутствуют :( и ни куда не делись.
что за фигня?
...
Рейтинг: 0 / 0
28.12.2012, 09:43
    #38095748
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
Roman Mejtes,

Потому что CultureTypes.AllCultures & ~CultureTypes.NeutralCultures не срезает все CultureTypes.NeutralCultures, а запрашивает CultureTypes.SpecificCultures | CultureTypes.InstalledWin32Cultures.

Посмотрите под отладчиком на
Код: c#
1.
var allButNeutral = CultureTypes.AllCultures & ~CultureTypes.NeutralCultures;


ЗЫ. Отфильтровать "как надо" можно linq'ом, ящитаю.
...
Рейтинг: 0 / 0
28.12.2012, 09:59
    #38095758
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
enigmatic,

имеет ли смысл использовать linq или просто с помощью if?
linq как то по другому фильтрует?
...
Рейтинг: 0 / 0
28.12.2012, 10:23
    #38095791
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
Roman Mejtes, фильтрует при помощи if
...
Рейтинг: 0 / 0
28.12.2012, 11:24
    #38095885
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
Roman Mejtes,

Имеет.
Можно и в цикле if'ом, но получится то же самое, только хуже.

Вот как это будет выглядеть с Linq:
Код: c#
1.
CultureInfo[] allButNeutral = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => !c.IsNeutralCulture).ToArray();

В Where - условие (предикат) фильтрации. ToArray() преобразует IEnumerable<T> в Array.
ЗЫ. Не забудьте подключить неймспейс:
Код: c#
1.
using System.Linq;
...
Рейтинг: 0 / 0
28.12.2012, 11:29
    #38095897
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
enigmatic,

я это уже сделал так
(from CultureInfo p in cultures where ((p.CultureTypes & CultureTypes.NeutralCultures) != CultureTypes.NeutralCultures) select p)

есть какая то существенная разница? :)
...
Рейтинг: 0 / 0
28.12.2012, 12:50
    #38096047
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CultureInfo.GetCultures()
Roman Mejtes,

Нет. Но мой вариант лучше
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / CultureInfo.GetCultures() / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]