У меня есть стол, который имеет три столбца: username
, followerCount
и CreateDate
.LINQ & SQL Server: упорядочить по стартовой строке
В таблице около 110000 пользователей, и я пытаюсь показать пользователей, упорядоченных по followerCount
. Я делаю так:
select top 50 *
from Users
where followerCount <= @followerCount
order by followerCount desc, createDate desc
Так второй странице я прохожу последний followerCount
с первой страницы, и я получаю следующую страницу и так далее.
Но есть некоторые пользователи в таблице, что они имеют один и тот же счетчик. Например, 250 пользователей имеют 5000 подписчиков. Поэтому, когда я выполняю пейджинг, я не могу получить следующую страницу правильно, потому что есть больше пользователей с 5000 последователей.
Например, я нахожусь на странице 9, и у последнего пользователя есть 5001 последователей, я передаю 5001 в хранимую процедуру, и у меня есть 50 пользователей, у которых 5000 пользователей. Но есть еще 200 пользователей, и когда я передаю это время 5000 (последний номер из предыдущего пейджинга) снова в мою хранимую процедуру, он пропустит все остальное и приведёт меня к пользователям с последователями 4xxx.
Как я могу достичь, чтобы привести правильных пользователей, у которых одинаковое количество последователей?
Исправление: я использую Entity Framework для этой цели, я разместил SQL-инструкцию для удобного понимания.
Единственный параметр @followerCount недостаточно для определения того, что вы хотите. Если вы используете EF6.1.2 + с SQL-сервером 2012, вы можете добавить SKIP и TAKE более эффективно с помощью 'OFFSET FETCH' https://technet.microsoft.com/en-us/library/gg699618(v=sql. 110) .aspx – Eric