排序和分页 ASP C#

Sorted and Paged ASP C#

我正在尝试在我的 ASP.NET MVC5 应用程序中设置搜索、分页和排序。我不断收到以下错误...方法 'Skip' 仅支持 LINQ to Entities 中的排序输入。方法 'OrderBy' 必须在方法 'Skip' 之前调用。我正在遵循 Microsoft 指南...(http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)

我错过了什么?看起来很简单。

public class npsAAA_dataController : Controller
{
    private npsAAAEntities db = new npsAAAEntities();

    // GET: npsAAA_data
    public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
    {
        ViewBag.CurrentSort = sortOrder;
        ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
        ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";

        if (searchString != null)
            page = 1;
        else
            searchString = currentFilter;

        ViewBag.CurrentFilter = searchString;
        var user = from s in db.accounting_data select s;

        if(!String.IsNullOrEmpty(searchString))
        {
            user = user.Where(s => s.User_Name.Contains(searchString));
        }
        switch(sortOrder)
        {
            case "name_desc":
                user = user.OrderByDescending(s => s.User_Name);
                break;
            case "Date":
                user = user.OrderBy(s => s.timestamp);
                break;
            case "date_desc":
                user = user.OrderByDescending(s => s.timestamp);
                break;
            default:
                user = user.OrderBy(s => s.User_Name);
                break;

        }
        int pageSize = 10;
        int pageNumber = (page ?? 1);
        return View(db.accounting_data.ToPagedList(pageNumber,pageSize));
    }

您没有在 return View() 行中 return 排序数据。您当前的代码正在将已排序的数据分配给 user,但随后您忽略了它,而是再次调用数据库以获取 return 未排序的数据。将您的代码改为:

return View(user.ToPagedList(pageNumber, pageSize));