Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分页错误:方法';跳过';仅支持LINQ to实体中的排序输入。方法';订购人';必须在方法';跳过';_C#_Asp.net Mvc - Fatal编程技术网

C# 分页错误:方法';跳过';仅支持LINQ to实体中的排序输入。方法';订购人';必须在方法';跳过';

C# 分页错误:方法';跳过';仅支持LINQ to实体中的排序输入。方法';订购人';必须在方法';跳过';,c#,asp.net-mvc,C#,Asp.net Mvc,我有以下代码。我没有使用排序,只是过滤或搜索信息。我也没有使用skip方法。请参阅下面的代码 public ActionResult Index(string currentFilter=null, string search=null, string searchBy=null, int? page=1) { var student = from d in db.Student_vw where d.is_active ==

我有以下代码。我没有使用排序,只是过滤或搜索信息。我也没有使用skip方法。请参阅下面的代码

public ActionResult Index(string currentFilter=null, string search=null, string searchBy=null, int? page=1)
    {
        var student = from d in db.Student_vw
                      where d.is_active == true
                      select d;
        if (searchBy == "default")
        {
            student = student.OrderByDescending(x => x.ID_Number);
        }

        //searching of an item
        if (!String.IsNullOrEmpty(search))
        {
            student = student.Where(x => x.ID_Number.Contains(search) || x.student_fname.Contains(search)
                || x.student_lname.Contains(search) || x.section_name.Contains(search) || x.course_name.Contains(search)
                || x.student_address.Contains(search) || x.batch_name.Contains(search) || x.adviser_fname.Contains(search) || x.adviser_lname.Contains(search) || x.student_email_add.Contains(search));
        }
        else {
            student = student.OrderByDescending(x => x.ID_Number);
        }
        ViewBag.CurrentFilter = search;

        int pageSize = 25;
        int pageNumber = (page ?? 1);

        var returnMe = student.ToPagedList(pageNumber, pageSize);

        return View(returnMe);
    }

提前感谢您的帮助。

@Jen-您需要在代码中使用OrderBy before student.ToPageList(pageNumber,pageSize)

当搜索有值时,学生不需要排序。按以下步骤做

public ActionResult Index(string currentFilter=null, string search=null, string searchBy=null, int? page=1)
    {
        var student = from d in db.Student_vw
                      where d.is_active == true
                      select d;
        //if (searchBy == "default")
        //{
        //    student = student.OrderByDescending(x => x.ID_Number);
        //}

        //searching of an item
        if (!String.IsNullOrEmpty(search))
        {
            student = student.Where(x => x.ID_Number.Contains(search) || x.student_fname.Contains(search)
                || x.student_lname.Contains(search) || x.section_name.Contains(search) || x.course_name.Contains(search)
                || x.student_address.Contains(search) || x.batch_name.Contains(search) || x.adviser_fname.Contains(search) || x.adviser_lname.Contains(search) || x.student_email_add.Contains(search));
        }
        //else {
        //    student = student.OrderByDescending(x => x.ID_Number);
        //}
        ViewBag.CurrentFilter = search;

        int pageSize = 25;
        int pageNumber = (page ?? 1);

        var returnMe = student.OrderByDescending(x => x.ID_Number).ToPagedList(pageNumber, pageSize);

        return View(returnMe);
    }

SQL不能保证结果的顺序,除非你给它一个order by,所以在没有order by的情况下使用Take或Skip(PagedList内部是这样做的)没有任何逻辑意义,理论上每次都会给你完全不同的结果


您编写逻辑的方式可能会失败,而无需每次点击order by语句。

ToPagedList使用Skip,您需要按照异常消息的说明首先对结果进行排序。