﻿# V3078\. Sorting keys priority will be reversed relative to the order of 'OrderBy' method calls\. Perhaps, 'ThenBy' should be used instead\.

Анализатор обнаружил потенциальную ошибку: два раза подряд вызываются методы 'OrderBy' или 'OrderByDescending'\. Результат такой сортировки может отличаться от ожидаемого\.

Рассмотрим пример:

```cpp
var seq = points.OrderBy(item => item.Primary)
                .OrderBy(item => item.Secondary);
```

Допустим, программист хотел отсортировать коллекцию так, чтобы элементы были сгруппированы и отсортированы по 'Primary', а внутри каждая группа была отсортирована по 'Secondary'\.

Но на самом деле элементы коллекции будут сгруппированы и отсортированы по 'Secondary', а внутри каждая группа будет отсортирована по 'Primary'\.

Для получения ожидаемого поведения второй вызов 'OrderBy' следует заменить на вызов метода 'ThenBy'\.

```cpp
var seq = points.OrderBy(item => item.Primary)
                .ThenBy(item => item.Secondary);
```

Используя два вызова 'OrderBy', получить предполагаемое поведение также можно, но для этого необходимо поменять вызовы местами:

```cpp
var seq = points.OrderBy(item => item.Secondary)
                .OrderBy(item => item.Primary);
```

Аналогичную ошибку можно допустить при написании кода с использованием синтаксиса запроса:

```cpp
var seq = from item in points
          orderby item.Primary
          orderby item.Secondary 
          select item;
```

Код можно исправить следующим образом:

```cpp
var seq = from item in points
          orderby item.Primary, item.Secondary
          select item;
```