More than once I have needed to sort items according to some arbitary sort criteria, for example to sort a list of status codes. They can't be logically sorted alphabetically, so I wrote these routines.
In the example, it is a string list, but it could be any object with a bit of modification. Essentially this uses a Comparer, which uses the position within the SortString to decide on the order of the items. Nice and simple.