微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 服务器端分页和排序最佳实践?

我使用以下方法为我的jqgrid的子网格获取数据,并且它的工作完全正常.

请注意,此方法用于实现服务器端排序和分页.

现在我的查询就像你在行中看到的一样

列表与LT; SomeEntity> myList = _service.GetSomeData(id);这里进行数据库调用获取所有记录.

所以我只是不太确定,所以我只是想知道这是否符合实施服务器端分页的最佳实践

public JsonResult GetData(string folderId,string sidx,string sord,int page,int rows) {
    int id = int.Parse(folderId);
    List < SomeEntity > myList = _service.GetSomeData(id);

    const int pageSize = 5;

    // total
    double totalPages = Math.Ceiling((double) myList.Count() / pageSize);

    // sort
    if (sord == "asc") {
        myList = myList.OrderBy(m = > m.Name).ToList();
    }
    else {
        myList = myList.OrderByDescending(m = > m.Name).ToList();
    }

    // paging
    myList = myList.Skip((page - 1) * pageSize).Take(pageSize).ToList();

    var jsonData = new {
        total = totalPages,records = domainList.Count,page,rows = myList
    };

    return Json(jsonData,JsonRequestBehavior.AllowGet);
}​
最佳答案
看起来您正在从服务(_service)返回所有数据,然后分页结果.此外,看起来您每次发出寻呼请求时都会发出相同的请求.如果是真的,那么我认为这是低效的.

您的服务(_service)应该处理Take和Skip功能(作为参数传递),从而减少通过线路获取和发送的记录数.您没有发布GetSomeData(id)方法代码.是返回IEnumerable还是IQueryable?这也会影响性能/效率.

我希望我没有误解你的代码或问题.

原文地址:https://www.jb51.cc/jquery/428121.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐