linq paging - получить общее количество строк - PullRequest
5 голосов
/ 14 ноября 2009

У меня вопрос по поводу linq. Я использую Skip and Take для пейджинга:

(from l in db.ProductList
          select l).Skip((page - 1) * row_per_page).Take(row_per_page)

Это работает, и мне нужно получить общее количество строк в списке товаров, чтобы вычислить максимальную страницу. Я думаю, что я должен использовать другой запрос для подсчета строк, но есть другой способ сделать это в одном запросе выше?

Ответы [ 3 ]

4 голосов
/ 14 ноября 2009

Чтобы получить количество строк, используйте метод расширения .Count ()

var count = (from l in db.ProductList select l).Count();
1 голос
/ 04 ноября 2010

Суть в том, что вам нужно будет перечислить все элементы, чтобы получить общее количество страниц. Но вы хотели бы перечислить их только один раз. Я предлагаю вам попробовать метод GroupBy, чтобы получить IEnumerable> "pages". Затем вы можете использовать pages.Count (), чтобы получить количество страниц. Или вы можете перечислять страницы, чтобы получить каждую страницу элементов. Запрос GroupBy будет выполнен только один раз.

0 голосов
/ 03 ноября 2010

Невозможно получить общее количество строк и подмножество "пропустить / взять" этих строк в одном запросе.

Есть ли причина, по которой вам это нужно в двух запросах?

...