我对Linq完全不熟悉。 我需要将分页逻辑从SQL转换为Linq。 我在SQL中的分页逻辑是:
where num BETWEEN ((@pageNumber-1)*@pageSize) + 1 and (@pageSize * @pageNumber)
因此,如果pageNumber
为2
而pageSize
为30
,我的查询会将记录从行31
提取到行{{1} }。
我在LINQ中实现了相同的逻辑,但它没有记录错误:
60
有人可以请告诉我LINQ查询有什么问题。
答案 0 :(得分:1)
您需要在Linq中跳过并记录记录而不是整页:
query.Skip((pageNumber - 1) * pageSize).Take(pageSize);
答案 1 :(得分:1)
render() {
<div>
{<this.props.sidebar names={ ['foo', 'bar'] } isOpen={true} />}
{<this.props.content type={ contentType } background={'#fff'} />}
<div>
}
query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable();
- &gt;跳过记录数量,Skip
在跳过记录后会占用记录数。因此,如果要显示31到60,则需要Take
30和Skip
30。
将来你可以致电:
Take
通过此功能,您可以查看此query.Skip((pageNumber - 1)*pageSize).Take(pageSize).ToString();
将生成的Sql
答案 2 :(得分:1)
您必须将跳过的内容乘以页面大小,与SQL中的方法相同,然后选择所需的行。 所以对你来说就像是:
query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable();