我想翻阅一些记录,但是Take()
延伸自LINQ
没有返回我预期的结果。
public IQueryable<Person> GetPersonBetweenDates(DateTime start, DateTime end)
{
return dbcontext.Persons.Where(x => x.RegisterDate >= start && x.RegisterDate <= end).Take(20);
}
当我再次运行这个方法时,我得到了相同的结果。究竟如何Take()
work?
The Take
方法返回前 N 条记录(N 为参数),如果总数小于 N,则返回所有记录。要实现分页,请与Skip
,指定在获取下一页结果之前要跳过的记录数。您可能还需要提供一些总排序,以确保查询每次都以相同的顺序返回结果。
注意:我假设从零开始分页。
private const int _pageSize = 20;
public IQueryable<Person> GetPersonBetweenDates(DateTime start, DateTime end, int? page)
{
return dbcontext.Persons
.Where(x => x.RegisterDate >= start && x.RegisterDate <= end)
.OrderBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.ThenBy(x => x.Id) // using unique id to force consistent total order
.Skip((page ?? 0) * _pageSize)
.Take(_pageSize);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)