Sorted List of Available Cultures in .NET
Get alphabetically ordered list of available cultures in .NET
Introduction
If you ever wanted to populate a drop down list (combo box) with a list of available cultures, for sure you have had the following problem: the list CultureInfo.GetCultures()
provides you an alphabetically unsorted list. The following code snippet will help you sort cultures based on your criteria.
There is nothing fancy here, just using the existing List.Sort()
and string.Compare()
functions provided by .NET.
Background
Check CultureInfo
class on MSDN here.
Using the Code
The following piece of code returns CultureTypes.SpecificCultures
list, alphabetically ordered by culture's NativeName
. You can change it to sort by EnglishName
, DisplayName
or any other CultureInfo
property you want.
/// <summary> Alphabetically ordered list of cultures </summary>
/// <param name="cultureType">Culture type</param>
/// <returns>Alphabetically ordered list of cultures</returns>
public IEnumerable<CultureInfo> GetCultureList(CultureTypes cultureType = CultureTypes.SpecificCultures)
{
var cultureList = CultureInfo.GetCultures(cultureType).ToList();
cultureList.Sort((p1, p2) => string.Compare(p1.NativeName, p2.NativeName, true));
return cultureList;
}
Points of Interest
Always use the already existing .NET functionality as your first choice, fallback to custom solution when not otherwise possible.
Have fun!
History
- Version 1.1 - Grammar and spell fixes
- Version 1.0 - Initial version