очень шарю...
Есть строчка кода:
var comparerList = list.OrderBy(x=>x.Name).ToList().OrderBy(x=>x,new SiteMapComparer());
Так она работает и сортирует как надо, но тут костыль в виде ToList и выглядит страшно
Но если написать по человечески:
var comparerList = list.OrderBy(x=>x.Name).ThenBy(x=>x,new SiteMapComparer());
То я не попадаю в SiteMapComparer и , соответвенно, сортировка у меня не так, как я хотел
почему так происходит?
Исходя из первой строчки х#й его поймет как Вам надо
Разные методы
так вроде бы они друг друга дополняют типо дополнительное условие к сортировки по возрастанию...
Так во втором случае ты не исполнил LINQ запрос (в первом тоже не выполниться же сортировка по компаратору). В конце должен быть привод в колекцию, так как OrderBy & ThenBy это deferred execution метода
Не работает так всё равно)
https://stackoverflow.com/a/49517552
Подебажил. Вышло что ThenBy это как бы "вторичный" критерий. Если у тебя будут два одинаковые обьекты по OrderBy тогда он сортанет уже по ThenBy.
да, так работает но так мне не нравится всё равно, потому что 2 сортировки получается по всей коллекции тогда подумаю, как можно упростить, чтобы всё таки сортировка была одна, а не 2
Создать компаратор со всеми сравнениями/ифами и сделать list.OrderBy(x => x, new MultiSortComparer()); Прям как в старых добрых С++ для qsort
Обсуждают сегодня