c# - 分页搜索结果

标签 c# asp.net .net entity-framework search

我刚刚读完 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/

相关文章:

c# - .NET 使用自定义 Mime 类型发送电子邮件附件

c# - 从 Installer 类获取当前 msi 安装文件的名称

asp.net - 如何使用asp.net mvc实现 session 超时页面显示

c# - 在 Web 应用程序中从 Javascript 调用 C# 函数

c# - DataGridView 滚动事件(和 ScrollEventType.EndScroll)

C# + Windows Phone => TextBlock,保留空格?

c# - 如何以编程方式运行 NUnit

c# - 如何在where子句中将字符串转换为DateTime?

c# - 当枚举包含具有相同值的元素时,如何将基本类型值转换为枚举值?

c# - 过滤数据时简化linq