当我使用“LINQ toEntity”显示每个产品并在 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'."
LINQ:
Model.Name = db.Products.Where(p => p.ProductSubcategoryID == id)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
我该如何修复它?如果我把会发生什么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();
这是必需的,因为生成的 SQL 将生成类似以下内容的内容:
WHERE generated_id BETWEEN x AND y
如果您没有明确告诉数据库服务器返回结果的顺序...您的结果每次都会不同(可能)。然而,如果您按字段排序,则保证它们按顺序出现,因此您的分页将产生一致的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)