Get the total number of records when doing pagination

被刻印的时光 ゝ 提交于 2019-12-09 02:36:48

问题


To get a page from a database I have to execute something like this:

var cs = ( from x in base.EntityDataContext.Corporates
   select x ).Skip( 10 ).Take( 10 );

This will skip the first 10 rows and will select the next 10.

How can I know how many rows would result because of the query without pagination? I do not want to run another query to get the count.


回答1:


To get the total number of records before skip/take you have to run a separate query. Getting the actual number returned would use Count(), but wouldn't result in another query if the original query was materialized.

var q = from x in base.EntityDataContext.Corporates 
        select x;

var total = q.Count();
var cs = q.Skip(10).Take(10);
var numberOnSelectedPage = cs.Count();



回答2:


Bottom line: you have to run two queries. You simply can't get around it.

Here's a good way to do it, however, that caches the original LINQ query and filter, making for less copy/paste errors:

var qry = from x in base.EntityDataContext.Coporates select x;
var count = qry.Count();
var items = qry.Skip(10).Take(10).ToList();


来源:https://stackoverflow.com/questions/2008647/get-the-total-number-of-records-when-doing-pagination

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!