Я использую 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 (датский, язык) она вылетает только во время выполнения.