我刚刚读完 Mike 的精彩教程:http://www.mikesdotnetting.com/Article/150/Web-Pages-Efficient-Paging-Without-The-WebGrid
我正在使用 SQL CE 4.0 和 Entity F/W ADO.NET,我的搜索查询是:
foreach(string term in query)
{
var products = database.Products.Where(p =>
p.PartNumber.ToLower().Contains(term.ToLower()) ||
p.PartNumber.ToLower() == term.ToLower() || p.OProductName.ToLower().Contains(term.ToLower()) || p.OProductName.ToLower() == term.ToLower());
}
在迈克的搜索查询中:
sql = "Select Title, ISBN, Description, FirstName, LastName, Category From Books " +
"Inner Join Authors on Books.AuthorId = Authors.AuthorId " +
"Inner Join Categories on Books.CategoryId = Categories.CategoryId " +
"Order By BookId OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY;";
var result = db.Query(sql, offset, pageSize);
他使用正常的“WebMatrix 方式”对数据库执行选择查询。
让我陷入困境的部分是如何在我的查询版本中编写他的 OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY;
?如何在 EF ado.net 中编写它?
我希望这是有道理的。
最佳答案
假设我正确理解你的问题,你应该使用 Skip 的组合方法和Take方法:
var query =
from product in database.Products
// where product.Property == "some value" // or whatever your where clause is
select product;
var queryPage = query.Skip(itemsPerPage * pageIndex).Take(itemsPerPage);
关于c# - 分页搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781435/