Reputation: 13176
I'm wanting to create a IComparer<string>
for a SortedDictionary<string, int>
that will sort everything alphabetically but if it see a key of 'Other' it will put 'Other' at the end of the list.
Upvotes: 0
Views: 73
Reputation: 113472
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:
Upvotes: 2