Custom sort logic in OrderBy using LINQ

Bala R picture Bala R · Jun 9, 2010 · Viewed 26.1k times · Source

What would be the right way to sort a list of strings where I want items starting with an underscore '_', to be at the bottom of the list, otherwise everything is alphabetical.

Right now I'm doing something like this,

autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )

Answer

Amy B picture Amy B · Jun 9, 2010

If you want custom ordering, but don't want to supply a comparer, you can have it - sql style:

autoList
.OrderBy(a => a.StartsWith("_") ? 2 : 1 )
.ThenBy(a => a);