分页错误:仅在LINQ to Entities中对已排序的输入支持方法'Skip'.必须在方法'Skip'之前调用'OrderBy'方法

use*_*944 6 c# linq entity-framework

我在索引页面上的MVC中进行寻呼..在这条线上我收到了错误

return View( employee.ToPagedList(Page ?? 1,3));
Run Code Online (Sandbox Code Playgroud)

这是索引方法

 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));
    }
Run Code Online (Sandbox Code Playgroud)

我没有使用Skip方法......但是有这个错误:

只有LINQ to Entities中的排序输入才支持'Skip'方法.必须在方法'Skip'之前调用'OrderBy'方法.

我读过类似的帖子

只有LINQ to Entities中的排序输入才支持'Skip'方法.必须在方法'Skip'之前调用'OrderBy'方法

如何解决"方法'Skip'仅支持LINQ to Entities中的排序输入."

只有LINQ to Entities中的排序输入才支持'Skip'方法.必须在方法'Skip'之前调用'OrderBy'方法

ASP.NET MVC 3 PagedList.只有LINQ to Entities中的排序输入才支持'Skip'方法.

并做了以下更改......

1.Put employee.wif语句之前的代码:

2.在switch语句中添加一个默认大小写,并使其抛出.case"Default":抛出新的ArgumentException("error",sortBy);

  1. 使用IOrderedQueryable类型.

    IQueryable employee = db.Employees.AsQueryable();

这不解决问题..
大多数他们使用Skip方法..但我没有...和其他帖子查询是复杂的..

请建议丢失什么

Mel*_*igy 12

你有一个Skip方法.

PagedList为您添加它.检查代码.这就是分页的工作原理,Take以及Skip.

另外我认为你的案例陈述是有意的

    switch (sortBy)
    {
        case "Name desc":
            employee = employee.OrderByDescending(x => x.FUllName);
            break;

        default: // Not: case "Default"
            employee = employee.OrderBy(x => x.FUllName);
            break;
    }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

15032 次

最近记录:

11 年,5 月 前