Open aorgish opened 5 years ago
исправлено
Copy-paste остался, замена switch на if-else не меняет суть дела: https://github.com/romaGri/.NET-Tasks/blob/a91ba498578d537effd4b90039df9c66f5b33643/02-Generics/Generics/Generics.cs#L177-L188
Для избавления от copy-paste смотрим, чем отличаются эти куски кода (Item1, Item2, ...) и выносим изменяющиеся части в переменную:
var propGetters = new Func<Tuple<T1, T2, T3>, IComparable>[]
{
x => x.Item1,
x => x.Item2,
x => x.Item3
};
var propGetter = propGetters[sortedColumn];
var koeff = ascending ? +1 : -1;
Array.Sort(array, (x, y) => koeff * propGetter(x).CompareTo(propGetter(y));
1) Для сортировки можно использовать стандартный метод Array.Sort (https://docs.microsoft.com/en-us/dotnet/api/system.array.sort?view=netframework-4.7.2) . 2) И надо постараться избавиться от copy-paste стиля для различных sortedColumn.