2010-05-10 6 views
1

Кажется, я не могу найти ответ на этот вопрос или хороший пример того, как выполнить то, что я пытаюсь сделать. Я уверен, что это где-то было опубликовано или объяснено, но мне трудно найти точное решение, в котором я нуждаюсь.Пейджинг с поиском с использованием активной записи

Я использую ActiveRecord в Subsonic 3.0.0.4. Когда я делаю что-то вроде

recordset = VehicleModel.Find(x => x.Model.StartsWith(SearchText)); 

я вернусь IList объектов VehicleModel (или более просто набор записей), это хорошо, пока я не вернусь слишком много записей. Я также не могу заказать возвращенный набор записей (моя сетка будет делать это отлично, но я уверен, что это будет слишком медленно, если у меня слишком много записей). Быть тем, что Find возвращает IList, не так много, что я могу бежать прямо против этого (опять-таки я могу игнорировать что-то простое, поэтому, пожалуйста, не убивайте меня).

Мой вопрос: может кто-нибудь объяснить, как найти такие данные, как я наверху, отсортировать его и получить страницу данных, где страница имеет размер n?

Я иду об этом неправильно? Я даже близок к тому, чтобы быть на правильном пути?

ответ

0
int currentPage = x 
int pageSize = n 
recordset = VehicleModel.Find(x => x.Model.StartsWith(SearchText)).Skip(currentPage x PageSize).Take(PageSize); 

это если CurrentPage начинается с 0.
, если ваш CurrentPage начинается с 1, то его Skip((currentPage - 1) x PageSize)

+0

Когда я набираю в. после SearchText)) Я не получаю Skip в качестве опции, и когда я компилирую, я получаю сообщение об ошибке (Ошибка «System.Collections.Generic.IList » не содержит определения для «Пропустить» и не используется метод расширения «Пропустить», принимающий первый аргумент типа «System.Collections.Generic.IList » (вам не хватает директивы использования или ссылки на сборку?). Как я упоминал в начальный вопрос Find возвращает IList, может быть, файл ActiveRecord.tt, который я использую, старше или, может быть, мне что-то не хватает? –

+0

Я идиот. Мне не хватало моего использования System.Linq; Спасибо, что помогли мне понимаете, что мне нужно больше спать и меньше кофе. –

+0

снова смотрел на код, im довольно уверен, что вы можете использовать дозвуковой метод GetPaged. – spaceman

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