用LINQ,我怎么得到M到M+N行
本文关键字:M+N LINQ | 更新日期: 2023-09-27 18:16:14
我正在为我的视图创建一个分页系统,根据列的值排序的前20个项目(如果总数少于20个,则更少)显示在视图上,然后查看者可以单击"第2页"查看21到40个项目(如果总数少于40个,则更少),然后单击"第3页"查看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;
}
但显然这是荒谬的。我到底应该在这里做什么?
你想把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表示第一页。