Entity Framework - Упорядочить по убыванию, а затем выполнить Distinct для этого результата возвращает неправильные результаты - PullRequest
0 голосов
/ 27 сентября 2019

В настоящее время у меня есть класс, который выглядит следующим образом

class Student
{
    [Key]
    public int StudentLogId { get; set; }
    public string Guid { get; set; }
    public string info { get; set; }
}

Теперь я хотел бы отсортировать результат по убыванию по Id (последним сверху), а затем по темрезультаты получают различные значения (короче говоря, важен порядок сортировки).Я заметил, что если я сделаю это

// Упорядочить студентов в порядке убывания на основе их идентификатора

List<string> lst = StudentLogHistoryModel.OrderByDescending(s => s.StudentLogId).Select(u => u.Guid).ToList<string>();

Выше приведен верный результат в правильном порядке, теперь я хотел бы толькополучить уникальные значения, поэтому я попытался добавить к вышеупомянутому запросу и придумал это

List<string> lst = StudentLogHistoryModel.OrderByDescending(s => s.StudentLogId).Select(s => s.Guid).Distinct().ToList<string>();

Однако я заметил, что во втором порядке порядок был испорчен.Любые предложения о том, почему заказ не сохраняется?Как я могу это исправить?

Я имею в виду, что под ошибкой порядка подразумевается, что первый результат, который я получил, был [A,A,B,B,D] Я ожидал получить [A,B,D] после второго запроса.Однако я получаю что-то вроде [D, A, B]

1 Ответ

0 голосов
/ 29 сентября 2019

Согласно документам :

Поведение запроса, возникающее в результате выполнения дерева выражений, представляющего вызов Distinct (IQueryable), зависит от реализации типапараметра источника.Ожидаемое поведение заключается в том, что он возвращает неупорядоченную последовательность уникальных элементов в источнике.

Ключевой бит там - «неупорядоченный».Distinct IQueryable не гарантирует, что заказ поддерживается.Таким образом, вам нужно OrderBy после Distinct.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...