I have a list of my custom class Customer and I want to sort them alphabetically by Title. So I wrote
myList = myList.OrderByDescending(x => x.Title).ToL
The workaround I found for a somewhat similar problem was to have a secondary field that held the converted version of the data.
In my case, we had person.Name
and person.SearchName
, where SearchName
was Name
converted to have no diacritics.
But this was only the best approach (AFAIK) because we wanted a speedy db search/filtering and then instantiating only the relevant results.
If you already have the objects in memory I would advise going with one of the other approaches; and not this one.
I my case: _My sorting list have value was encoded. This make my order incorrect. Add decoded solving my problems !
You can use culture specific StringComparer
, see here.
CultureInfo culture = new CultureInfo("sv-SE");
var result = myList.OrderByDescending(x =>
x.Title, StringComparer.Create(culture, false));
Set the Thread.CurrentCulture property to the correct culture.