我为我的视图创建了一个分页系统,根据列的值显示前20个项目(如果少于20个,则更少),然后查看者可以点击" Page 2"看项目21到40(如果总共少于40项则更少),然后""看项目41-60等。我的控制器有一个成员
private static const int _scoresPerPage = 20;
我正构建一个方法
public string getPageNRows ( int N )
{
string scoresRowsHtml = String.Empty;
// ...
return scoresRowsHtml;
}
用于检索信息。现在,我知道如何通过0
获取ScoresController._scoresPerPage * N
,以便我可以在技术上做类似的事情
public string getPageNRows ( int N )
{
string scoresRowsHtml = String.Empty;
IQueryable<Score> table1 = ( from s in this._SD.Scores
orderby s.score1 descending
select s
).Take(ScoresController._scoresPerPage * N);
IQueryable<Score> table2 = ( from s in table1
orderby s.score1 ascending
select s).Take(ScoresController._scoresPerPage);
table2.Reverse();
// ...
return scoresRowsHtml;
}
但显然这很荒谬。我真的应该在这做什么?
答案 0 :(得分:2)
您希望将Skip()与Take()
合并IQueryable<Score> table1 = ( from s in this._SD.Scores
orderby s.score1 descending
select s
).Skip(ScoresController._scoresPerPage * (N-1))
).Take(ScoresController._scoresPerPage);
假设N == 1表示第一页。