.Take
在查询中返回指定数量的结果,如果是同一个查询,它通常会返回相同的结果。要解决此问题,您可以使用 和 的组合.Skip
,.Take
更改您每次Skip
ping 和ing 的号码。Take
private int counter = 0;
public IQueryable<Person> GetPersonBetweenDates(DateTime start, DateTime end)
{
var results = dbcontext.Persons.Where(x => x.RegisterDate >= start && x.RegisterDate <= end).Skip(counter).Take(20);
counter += 20;
return results;
}
请记住,即使没有更多记录,您也可以连续调用它。
或者,您可以缓存查询(如果您没有在每次使用时重新实例化该类):
private IQueryable<Person> qry = dbcontext.Persons.Where(x => x.RegisterDate >= start && x.RegisterDate <= end);
public IQueryable<Person> GetPersonBetweenDates(DateTime start, DateTime end)
{
qry = qry.Skip(20);
return qry.Take(20);
}
然而,这两个片段可能还有其他问题——请参阅 tvanfosson 的评论和回答。