要从数据库中获取页面,我必须执行以下操作:
var cs = ( from x in base.EntityDataContext.Corporates
select x ).Skip( 10 ).Take( 10 );
这将跳过前10行,并将选择下一行。
我怎么知道因为没有分页的查询会产生多少行?我不想再运行另一个查询来获取计数。
答案 0 :(得分:18)
要在跳过/取得之前获取记录总数,您必须运行单独的查询。获取返回的实际数字将使用Count(),但如果原始查询已实现,则不会导致另一个查询。
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();
答案 1 :(得分:11)
底线:您必须运行两个查询。你根本无法解决它。
然而,这是一种很好的方法,可以缓存原始LINQ查询和过滤器,从而减少复制/粘贴错误:
var qry = from x in base.EntityDataContext.Coporates select x;
var count = qry.Count();
var items = qry.Skip(10).Take(10).ToList();