将分页逻辑从SQL转换为Linq



我对Linq完全陌生。我需要将分页逻辑从SQL转换为Linq。我在SQL中的分页逻辑是:

where num BETWEEN ((@pageNumber-1)*@pageSize) + 1 and (@pageSize * @pageNumber)

因此,如果pageNumber2pageSize30,那么我的查询将从第31行一直拉到第60行。

我在LINQ中实现了相同的逻辑,但它提取了错误的记录:

query.Skip(pageNumber - 1).Take(pageSize * pageNumber).AsQueryable();

有人能告诉我我的LINQ查询出了什么问题吗。

您必须像在SQL中一样,将跳过的内容乘以页面大小,然后取下所需的行。所以对你来说,这就像:

query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable();

在Linq:中,您需要跳过并获取记录,而不是整个页面

query.Skip((pageNumber - 1) * pageSize).Take(pageSize);
query.Skip((pageNumber - 1)*pageSize).Take(pageSize).AsQueryable();

Skip->跳过记录数,Take取跳过的记录数后的记录数。所以,如果你想显示31到60。您需要Skip 30和Take 30。

将来您可以拨打:

query.Skip((pageNumber - 1)*pageSize).Take(pageSize).ToString();

有了这个,你可以看到SqlLINQ将产生什么

相关内容

  • 没有找到相关文章

最新更新