Нужна устойчивая сортировка на C#

204
14 октября 2017, 16:41

Как мне создать тоже самое в C# в консоли? Мне нужен объект такого же типа - таблица, как в примере ниже и такая же сортировка - устойчивая:

Пример (описание) с Вики:

При сортировке записей вида [фамилия, имя, отчество] по фамилии значения ключей для Иванов Сергей и Иванов Иван будут одинаковы, поэтому устойчивая сортировка не переставит Сергея и Ивана местами (Python 3, сортировка timsort1):

records = [
   {'фамилия': 'Иванов',  'имя': 'Сергей', 'отчество': 'Михайлович',},
   {'фамилия': 'Иванов',  'имя': 'Иван',   'отчество': 'Борисович',},
   {'фамилия': 'Абрамов', 'имя': 'Юрий',   'отчество': 'Петрович',},
]
records.sort(key=lambda x: x['фамилия'])  # сортировка по ключу "фамилия"
for r in records:
    print('%-12s %-12s %-12s' % (r['фамилия'], r['имя'], r['отчество'])

В результате записи будут отсортированы только по фамилии, с сохранением исходного порядка среди записей с одинаковыми фамилиями:

Абрамов Юрий Петрович 
Иванов Сергей Михайлович 
Иванов Иван Борисович
Answer 1

На C# это будет выглядеть так:

var sorted = records.OrderBy(x => x.Surname);
foreach (var r in records)
    Console.WriteLine($"{r.Surname,-12} {r.Name,-12} {r.Patronymic,-12}");

Ответ дан в комментариях @Alexander Petrov

READ ALSO
Как сделать тернарный if на JS?

Как сделать тернарный if на JS?

Условие если А меньше B то увеличить A на 1, в противном случае не делать ничего

217
JS изменить текст на другой вкладке

JS изменить текст на другой вкладке

Допустим открыта страница в браузере mysitecom/page-1

291
JS событие на другой вкладке

JS событие на другой вкладке

Открываю страницу mysitecom/1

244