Tru*_*ham 2 c# linq linq-to-entities entity-framework
当我使用"LINQ to entities"来显示每个产品并在ASP.NET MVC中实现分页时,我遇到了这个错误:
The method 'Skip' is only supported for sorted input in LINQ to Entities.
The method 'OrderBy' must be called before the method 'Skip'."
Run Code Online (Sandbox Code Playgroud)
LINQ:
Model.Name = db.Products.Where(p => p.ProductSubcategoryID == id)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
Run Code Online (Sandbox Code Playgroud)
我该如何解决?如果我把它OrderBy代替,会发生什么Where?
你不要" OrderBy代替Where"......你把它们结合起来:
Model.Name = db.Products.Where(p => p.ProductSubcategoryID == id)
.OrderBy(p => p.ProductSubcategoryID) // <---- this
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
Run Code Online (Sandbox Code Playgroud)
这是必需的,因为生成的SQL将产生如下内容:
WHERE generated_id BETWEEN x AND y
Run Code Online (Sandbox Code Playgroud)
如果您没有明确告诉数据库服务器返回的结果是什么...您的结果每次都会有所不同(可能).然而,如果您按字段进行排序,则可以保证它们按顺序排列,因此您的分页将产生一致的结果.
| 归档时间: |
|
| 查看次数: |
5177 次 |
| 最近记录: |