Linq分页及分页思想

分页思想:

加入一共有n条数据,每页显示m条数据,总的页数为totalPage=(n+m-1)/m,

A方案:海量数据,每次查(3m~5m条数据)(红色数字表示一次查出并传到前端)

当选择第一页的时候,我们查处5m条数据,再到前端分页, 1 2 3 4 5 ...totalPage

当选择第五页的时候,我们查处5m条数据,再到前端分页,1 2 3 4 5 6 7 ...totalPage

当选择第六页的时候,我们查处5m条数据,再到前端分页,1 ... 4 5 6 7 8 ...totalPage(删除第三页数据,加上第八页数据)

 

B方案:适量数据,每次查m条数据

当选择第一页的时候,我们查处m条数据,再到前端分页, 1 2 3 4 5 ...totalPage

当选择第五页的时候,我们查处5m条数据,再到前端分页,1 2 3 4 5 6 7 ...totalPage

 

Linq分页

Linq的Skin() 方法//跳过序列中指定数量的元素,然后返回剩余的元素。

Take() 方法 //从序列的开头返回指定数量的连续元素。

var a = from c in classes
                    join p in persons on c.PersonID equals p.Id
                    //orderby p.Id descending
                    select new { PersonId = p.Id, PersonName = p.Name, ClassName = c.Name, PersonPhone = p.Phone };
int totalPage = (a.Count() + 20 - 1) / 20;
a = a.Skip((6 - 1) * 20).Take(20);//第6页,每页20个

posted @ 2017-03-03 16:10  花生打代码会头痛  阅读(180)  评论(0)    收藏  举报