Click here to Skip to main content
15,891,529 members
Articles / Web Development / ASP.NET
Tip/Trick

Sorted List of Available Cultures in .NET

Rate me:
Please Sign up or sign in to vote.
4.89/5 (6 votes)
16 Mar 2014CPOL 10.3K   7  
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.

C#
/// <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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Romania Romania
I have been a software developer for a while and still find this an interesting job.

Comments and Discussions

 
-- There are no messages in this forum --