Учитывая двухбуквенное название региона, есть несколько культур, которые могут быть связаны с этим названием региона (потому что в стране можно говорить на нескольких языках).Например, для Швейцарии существует 4 культуры: de, fr, it, rm.
А теперь какой-нибудь код:
public static ILookup<string, CultureInfo> RegionToCultures()
{
// All the local cultures
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
// We "group" the cultures by their TwoLetterISORegionName
return cultures.ToLookup(x => new RegionInfo(x.LCID).TwoLetterISORegionName);
}
Код возвращает ILookup<string, CultureInfo>
(рассмотрим его какIDictionary<string, IEnumerable<CultureInfo>>
).
Используйте это как:
var rtoc = RegionToCultures();
, а затем:
var switzerlandCultures = rtoc["CH"];
foreach (CultureInfo culture in switzerlandCultures)
{
Console.WriteLine(culture.EnglishName);
}
Обратите внимание, что ILookup<,>
не будет сгенерировать исключение, если используется с несуществующим ключом: rtoc["aaaaa"]
просто вернет пустой IEnumerable<>
.