сортировка списка объектов по 2 свойствам этих объектов с использованием linq - PullRequest
0 голосов
/ 07 ноября 2018
class TeamInfo
{
    public int TeamId { get; set; }
    public int Points { get; set; }
    public int Average { get; set; } 
}

TeamId  : 5,22,11,52,59 
Points  : 3, 8, 8,12,16
Average : 8,-2,-4, 1, 5

У меня есть список объектов TeamInfo (List<TeamInfo> teamInfoList) Я хочу отсортировать этот список следующим образом:

TeamId | Points | Average
  59   |  16    |   5
  52   |  12    |   1
  22   |   8    |  -2
  11   |   8    |  -4
  5    |   3    |  -8

Мне нужно отсортировать сначала по точкам (по убыванию), а затем по среднему (по убыванию), если точки совпадают.

Я пробовал это;

List<int> sortTeams = teamInfoList
            .GroupBy(x => new { x.TeamId , x.Points, x.Average })
            .OrderByDescending(x=>new { x.Key.Points, x.Key.Average })
            .Select(i => i.Key.TeamId).ToList();

Полагаю, мне нужно реализовать IComparable, но я понятия не имею, как это сделать.

1 Ответ

0 голосов
/ 07 ноября 2018

Use ThenBy:

List<int> sortTeams = teamInfoList
    .OrderByDescending(x => x.Points)
    .ThenByDescending(x => x.Average)
    .Select(i => i.TeamId)
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...