FeST1VaL
@FeST1VaL
Тихий

Как отсортировать массив по двум полям?

Добрый день, голова чет не варит... не могу понять как отсортировать сначала по одному параметру и затем эти же элементы условно равные по первому параметру расставить по второму...
Условно собираю такой массив с такими элементами:
top.Add(new List<object>{
              { Name },
              { LVL },
              { EXP },
              { TYPE }
});

Дальше сортирую таким образом по LVL
top = top.OrderBy(p => p[1]).Take(100).ToList();

Пробовал через ThenBy следом по второму, но не получилось...

top = top.OrderBy(p => p[1]).ThenByDescending(p => p[2]).Take(100).ToList();


Тк если например у всех по 10 лвлу и разному кол-ву EXP, а например у одного уровень больше, но EXP меньше, то он вконце...

Т.е надо чтобы больший лвл сохранил свое место, хоть у него и меньше EXP чем у остальных

Песочка: https://dotnetfiddle.net/TL7gnB
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
FeST1VaL
@FeST1VaL Автор вопроса
Тихий
Разобрался...
Надо было делать OrderByDescending на LVL

т.е
top = top.OrderByDescending(pair => pair[1]).ThenByDescending(pair => pair[2]).Take(100).ToList();


И получается теперь вроде правильно:
[["TEST",76,8,0],["TEST_0",10,97,1],["TEST_3",10,93,1],["TEST_1",10,73,0],["TEST_9",10,71,0],["TEST_5",10,60,0],["TEST_6",10,58,1],["TEST_2",10,56,0],["TEST_8",10,36,1],["TEST_7",10,16,0],["TEST_4",10,8,0]]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы