【发布时间】:2014-05-13 05:18:46
【问题描述】:
我正在 MVC 中的索引页面上进行分页..在这一行我收到错误
return View( employee.ToPagedList(Page ?? 1,3));
这里是索引方法
public ActionResult Index(string searchBy, string search, int? Page, string sortBy)
{
ViewBag.SortNameParameter = string.IsNullOrEmpty(sortBy) ? "Name desc"
: "";
ViewBag.SortGenderParameter = string.IsNullOrEmpty(sortBy) ? "Gender desc"
: "Gender";
var employee = db.Employees.AsQueryable();
if (searchBy == "Gender")
{
employee = employee.Where(x => x.Gender == search || search == null);
}
else
{
employee = employee.Where(x => x.FUllName .StartsWith(search ) || search == null);
}
switch (sortBy)
{
case "Name desc":
employee = employee.OrderByDescending(x => x.FUllName);
break;
case "Default":
employee = employee.OrderBy(x => x.FUllName);
break;
}
return View( employee.ToPagedList(Page ?? 1,3));
}
我没有使用Skip方法...但是有这个错误:
“Skip”方法仅支持 LINQ to 中的排序输入 实体。必须在方法之前调用方法“OrderBy” “跳过”。
我看过类似的帖子
How to solve "The method 'Skip' is only supported for sorted input in LINQ to Entities."
ASP.NET MVC 3 PagedList. The method 'Skip' is only supported for sorted input in LINQ to Entities.
并做了以下更改...
1.将employee.Where代码放在switch语句前:
2. 在你的 switch 语句中添加一个默认情况,并让它抛出。 案例“默认”: throw new ArgumentException("error", sortBy);
-
使用 IOrderedQueryable 类型。
IQueryable 员工 = db.Employees.AsQueryable();
这不能解决问题..
大多数情况下,他们使用的是 Skip 方法..但我没有...而且其他帖子查询很复杂..
请提出遗漏的建议
【问题讨论】:
标签: c# linq entity-framework