Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Jquery 使用Skip和Take的Linq分页在第一页之后返回错误结果_Jquery_Linq_Take - Fatal编程技术网

Jquery 使用Skip和Take的Linq分页在第一页之后返回错误结果

Jquery 使用Skip和Take的Linq分页在第一页之后返回错误结果,jquery,linq,take,Jquery,Linq,Take,我们有一个jquery.jtable页面来实现分页。我们注意到分页不太正常。例如,如果共有17项,则第一页正确显示10项,第二页正确显示7项。但是,如果共有20项,则第一页显示10项,第二页仅显示8项。 我们正在使用: 返回myQuery.SkipStarIndex.TakepageSize.ToList 在第二个页面上,startindex=10,页面大小=10,正如我上面所说的,它只返回8。罪魁祸首似乎是那个。拿着。我在代码上方放置了一个if语句,其中包含take as: if

我们有一个jquery.jtable页面来实现分页。我们注意到分页不太正常。例如,如果共有17项,则第一页正确显示10项,第二页正确显示7项。但是,如果共有20项,则第一页显示10项,第二页仅显示8项。 我们正在使用:

返回myQuery.SkipStarIndex.TakepageSize.ToList

在第二个页面上,startindex=10,页面大小=10,正如我上面所说的,它只返回8。罪魁祸首似乎是那个。拿着。我在代码上方放置了一个if语句,其中包含take as:

       if (myQuery.Skip(startIndex).ToList().Count() <= pageSize)
       {
          return myQuery.Skip(startIndex).ToList();
       }
在第二次传递时,If返回true,因为count和pagesize都是10。这里的返回确实返回了第二页的所有10行。我担心的是,如果完整的myQuery集很大,可能会导致资源问题。幸运的是,这个特定的表包含一个小的行计数


是否有其他人遇到过这种情况并找到了更好的解决方案?

您推导startIndex的方法肯定是罪魁祸首。试试这个:

return myQuery.Skip((pageNumber - 1 ) * pageSize).Take(pageSize).ToList();
编辑:

并确保页码永远不会超过最大可能页码

var maxPages = maxRecords / pageSize + (maxRecords % pageSize > 0 ? 1 : 0);
例如,您有一种方法,可以仅检索特定页面所需的记录:

public List<SomeEntity> GetSomeEntityForPage(int pageNumber, int pageSize)
{
    return myQuery.Skip((pageNumber - 1 ) * pageSize).Take(pageSize).ToList(); 
}

您能用一个简短但完整的程序使用LINQ to对象来重现这一点吗?我希望一切都会好起来。。。顺便说一句,不清楚jquery是从哪里来的。仅仅因为jquery发出请求并不意味着它是问题的一部分。我会尽可能地孤立这个问题,排除所有无关的方面。