У меня есть ArrayList, который содержит большое количество строк. Его необходимо отсортировать на месте по трем полям (фактически трем подстрокам): Имя, Возраст и Сумма. Возраст — первая подстрока (позиция 0–3), Имя — вторая (3–6) и Amt — последняя (6–10). . Порядок, в котором эти параметры должны быть отсортированы, очень важен и выглядит следующим образом:
Сначала выполните по возрастанию сортировку по Имени, ЗАТЕМ выполните по возрастанию сортировку по Возрасту (который на самом деле идет раньше в подстроке) и ТОГДА выполните сортировку по убыванию по Amt. Вот и все.
у меня есть этот класс
public class ArrComparer : IComparer
{
public int Compare(object x, object y)
{
string left = x.ToString();
string right = y.ToString();
string lhs = left.Substring(3, 6);
string rhs = right.Substring(3, 6);
return lhs.CompareTo(rhs);
}
}
который я использую для сортировки на основе только одного поля - имени, вызывая
RecordList.Sort(new ArrComparer());
Это позволяет мне правильно сортировать по этому одному полю. Вопрос в том, как я могу изменить этот код, чтобы я мог сортировать по всем трем элементам СРАЗУ, в правильном порядке и с использованием правильного режима возрастания/убывания?
Любой код или советы будут с благодарностью. (Кстати, если вам интересно, использование универсального List<T>
не вариант в этом проекте).