You mean like this?
public sealed class MyComparer : Comparer<string>
{
public override int Compare(string x, string y)
{
if(x == "Other")
return y == "Other" ? 0 : 1;
if(y == "Other")
return -1;
// Change this comparer if required.
return StringComparer.OrdinalIgnoreCase.Compare(x, y);
}
}
Usage:
var dict = new SortedDictionary<string, int> (new MyComparer())
{
{ "Other", 1 }, { "aaa", 2 }, { "bbb", 3 }
};
Obviously, you can make this more generic by writing a SpecialCaseAtEndComparer<T>
by:
- Allowing the "special" value to be injected into the comparer.
- Allowing the "normal" comparer to be injected into the comparer.
- Making the comparer work for all types, not just strings.