LINQ Пропуск и ограничение с упорядочением приводит к странным результатам - PullRequest
3 голосов
/ 04 апреля 2019

Я использую LINQ для запроса базы данных для профилей. Он использует Skip, Limit и Ordering для загрузки профилей по порядку, но не сразу.

  return (
    queryable
        .OrderBy(usr => usr.FirstName)
        .ThenBy(usr => usr.LastName)
        .Skip(skip)
        .Take(limit)
        .Include(usr => usr.Workplaces)
        .ThenInclude(uwp => uwp.Workplace)
        .Include(usr => usr.ProfilePicture)
    );

Теперь я столкнулся с некоторыми проблемами, связанными с заказом. Допустим, я сначала пропускаю 0 и ограничиваюсь 20. Это должно дать мне 20 профилей, упорядоченных по имени и фамилии. Это странное поведение, когда люди имеют одинаковую фамилию. Допустим, это было найдено:

0.firstname: A  lastname: a
1.firstname: A  lastname: b
...
19.firstname: P lastname: Å

Тогда, когда я пропускаю 20 и ограничиваюсь 10. Я получаю следующий результат:

20.firstname: P  lastname: A
21.firstname: Q  lastname: A

Запись 19 и 20 теперь в неправильных позициях! «А» предшествует «А». Что мне здесь не хватает? Я предполагаю, что порядок фамилий не работал должным образом, так как сначала должна была быть возвращена запись 20, а не 19. Я удостоверился, что моя культура правильно настроена на шведский, используя CultureInfo.CurrentCulture.Name. Я также попытался установить культуру в сравнении с предложениями, приведенными здесь: Культура Linq orderby (датский, язык) она вылетает только во время выполнения.

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