Ну, вам нужно решить, какое из ваших основных сравнений. Используйте вторичное сравнение только в том случае, если первое дает равенство. Например:
public int Compare(Person p1, Person p2)
{
int primary = p1.Name.CompareTo(p2.Name);
if (primary != 0)
{
return primary;
}
// Note reverse order of comparison to get descending
return p2.Age.CompareTo(p1.Age);
}
(Это можно записать более компактно различными способами, но я сохранил это очень четко, чтобы вы могли понять концепции.)
Обратите внимание, что в MiscUtil у меня есть несколько строительных блоков, чтобы вы могли легко создавать компараторы, используя лямбда-выражения, составлять компараторы и т. Д.