1

Я совершенно не знаком с Linq. Мне нужно преобразовать логику подкачки из SQL в Linq. Моя пейджинговой логика в SQL является:Преобразование логики подкачки из SQL в Linq

where num BETWEEN ((@pageNumber-1)*@pageSize) + 1 and (@pageSize * @pageNumber) 

Так что, если pageNumber является 2 и pageSize является 30, мой запрос будет тянуть записи из строки 31 вверх грести 60.

Я реализовал ту же логику в LINQ, но это не тянет неправильно нет записей:

query.Skip(pageNumber - 1).Take(pageSize * pageNumber).AsQueryable(); 

Может кто-то пожалуйста, скажите мне, что случилось в моем запросе LINQ.

+0

Проверьте мой ответ и скажите мне, если что-то непонятно – mybirthname

ответ

1

Вы должны умножить то, что вы пропускаете по размеру страницы, точно так же, как и в SQL, и взять нужные строки в следующем. Итак, для вас это было бы так:

query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable(); 
1

Вы должны Пропустить и принять записи, а не целые страницы в Linq:

query.Skip((pageNumber - 1) * pageSize).Take(pageSize); 
1
query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable(); 

Skip -> пропуск количество записей, Take принимает число записей после того, как пропущенный one.So если вы хочу показать 31 до 60. вы должны Skip 30 и 30. Take

в будущем вы можете позвонить:

query.Skip((pageNumber - 1)*pageSize).Take(pageSize).ToString(); 

При этом вы можете увидеть, что SqlLINQ это произведет

 Смежные вопросы

  • Нет связанных вопросов^_^