分页错误:方法“跳过”仅支持LINQ to Entities中的排序输入.方法“OrderBy”必须在方法“Skip”之

本文关键字:方法 排序 OrderBy 输入 Skip to 跳过 错误 支持 Entities 分页 | 更新日期: 2023-09-27 17:55:59

我正在索引页面上的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));
    }

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

方法"跳过"仅支持在 LINQ to 中的排序输入 实体。方法"OrderBy"必须在方法之前调用 "跳过"。

我读过类似的帖子

方法"跳过"仅支持在 LINQ to 实体中的排序输入。方法"OrderBy"必须在方法"Skip"之前调用

如何解决"方法'跳过'仅支持用于 LINQ to 实体中的排序输入。

方法"跳过"仅支持在 LINQ to 实体中的排序输入。方法"OrderBy"必须在方法"Skip"之前调用

ASP.NET MVC 3 PagedList。方法"跳过"仅支持在 LINQ to 实体中的排序输入。

并做了以下更改...

1.把员工。其中 switch 语句前的代码:

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

  1. 使用类型 IOrderedQueryable。

    智商员工 = db。Employees.AsQueryable();

这并不能解决问题..
大多数情况下,他们使用跳过方法..但我没有...和其他帖子查询很复杂..

请建议缺少什么

分页错误:方法“跳过”仅支持LINQ to Entities中的排序输入.方法“OrderBy”必须在方法“Skip”之

你有一个Skip的方法。

PagedList为您添加了它。检查代码。这就是分页的工作方式,TakeSkip.

另外,我认为您的案例陈述是

    switch (sortBy)
    {
        case "Name desc":
            employee = employee.OrderByDescending(x => x.FUllName);
            break;
        default: // Not: case "Default"
            employee = employee.OrderBy(x => x.FUllName);
            break;
    }

请尝试此代码

    var employee = db.Employees.ToList()// Try to change AsQueryable to Ilist or List
    if (searchBy == "Gender")
    {
        employee = employee.Where(x => x.Gender == search || search == null).ToPagedList(Page ?? 1,3);
    }
    else
    {
        employee = employee.Where(x => x.FUllName .StartsWith(search ) || search == null).ToPagedList(Page ?? 1,3);
    }
     switch (sortBy)
    {
        case "Name desc":
            employee = employee.OrderByDescending(x => x.FUllName);
            break;
        case "Default":
            employee = employee.OrderBy(x => x.FUllName);
            break;
    }
      return View( employee);