Приведенный ниже код работает для сортировки двух столбцов (по фамилии, а затем по имени), однако мне нужно отсортировать по переменному количеству имен (2-5 на запись). Добавление еще одного разбиения ThenBy в пустое пространство вызывает исключение за пределами границ. Я понимаю почему, но мне было интересно, есть ли способ обойти этот код, чтобы заставить работать с Linq, или мне нужно пойти другим путем. Извиняюсь, если это просто, я полностью новичок в C #. Я некоторое время искал ответ и не могу его найти.
Код ниже выводит на консоль:
Jimbo Crab
Jonathan Crab
Michael Crab
Steve Cruthers
Barry John
David Johnson
Правильно упорядочено сначала по фамилии, затем по имени.
Однако имена, которые мне нужно отсортировать, имеют различную длину, например:
Барри Джон
Дэниел Джонсон Джеймс
Стив Дэвидсон, Эндрю Колинс
Лорна Майкл
Который должен производить:
Steve Davidson Andrew Colins
Daniel Johnson James
Barry John
Lorna Michael
Их нужно отсортировать в обратном порядке, то есть по фамилии, затем по именам и, наконец, по имени.
Заранее спасибо!
var listStr = new[] {
"Barry John", "Steve Cruthers", "Michael Crab", "David Johnson", "Jonathan Crab", "Jimbo Crab"};
var sorted = listStr
.OrderBy(s => s.Split(' ')[1])
.ThenBy(s => s.Split(' ')[0]);
foreach (var s in sorted)
{
Console.WriteLine(s);
}
}