use*_*640 3 sql sql-server-2012
我已经实现了无限滚动并将其与实体一起使用,但我想将其传输到 SQL Server,但不知道如何这是我在实体中的代码。
var page = id ?? 1;
const int recordsPerPage = 10;
var skipRecords = page * recordsPerPage;
var listOfProducts = _data.Products.Where(x => x.ProductLine != null);
return listOfProducts.
OrderBy(x=>x.Name).
Skip(skipRecords).
Take(recordsPerPage).ToList();
Run Code Online (Sandbox Code Playgroud)
我还有其他东西在工作,我只是不知道如何实现跳过,这就是我对 SQL Server 的操作
Select top 10 *
from products
where ProductLine != null
order by name
Run Code Online (Sandbox Code Playgroud)
应该是这样的,如果were在第1页,那么它应该显示top 10 (1 x 10),如果were在第2页,那么它应该显示top 20。
在 SQL Server 2012 中,如果您愿意让客户端维护状态(关于要偏移的行数),则可以使用OFFSET FETCH 子句进行分页。请参阅使用 OFFSET 和 FETCH 限制引用链接中返回的行部分。
一个例子(取自一些 MSDN 页面):
--Skip first 10 rows from the sorted result set and return the remaining rows.
SELECT * FROM MyTable ORDER BY col1 OFFSET 10 ROWS;
--Skip first 10 rows from the sorted resultset and return next 5 rows.
SELECT * FROM MyTable ORDER BY col1 OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)