250项中只有10项返回到页面
本文关键字:返回 10项 250项 | 更新日期: 2023-09-27 18:08:59
我的服务类中有一条语句,它返回数据库中的所有用户。我目前有250个用户,但在IE, chrome和FF,我每页只有10个用户。可能的原因是什么?如何才能改变这种情况?
public IEnumerable<Users> GetUsers(int sectionID)
{
var _user = DataBase.ProcsContext.GetRoster<Users>(sectionID, u => new Users
{
Name = UserColumnMap.Name(u),
Email = UserColumnMap.Email(u)
});
return _user;
}
GetRoster
public virtual IEnumerable<T> GetRoster<T>(int sectionId, Func<IDataRecord, T> modelBinder, int resultsPerPage = 10, int pageNumber = 1)
{
//code
}
有哪些可能的原因
这个问题的答案就在你被//code
删节的那段代码中。如果您看到这里发生了什么,您可能会注意到在分页中常用的Skip
和Take
方法:在特定大小的夹块中显示记录。现在,页面大小和页码的默认值分别为10
和1
。所以当你调用这个方法而不带可选参数时,你总是得到前10条记录。
如何改变
使用所需的页面大小和页码调用该方法。
并且-我将通过删除= 10
和= 1
来改进此代码。我认为对于分页方法,默认参数是无用的,而且具有欺骗性。您应该始终了解想要获得的页码和页面大小。按照David Tansey的评论:将其更改为总是返回所有记录的方法并不是一个好主意。
您的GetRoster
方法的默认resultsPerPage
值为10。尝试在调用该方法时更改此值,如下所示:
public IEnumerable<Users> GetUsers(int sectionID)
{
var _user = DataBase.ProcsContext.GetRoster<Users>(sectionID, u => new Users
{
Name = UserColumnMap.Name(u),
Email = UserColumnMap.Email(u)
},
resultsPerPage: 250);
return _user;
}
try this
using(dbContext context = new dbcontext())
{
var results = (from u in context.Users
where u.sectionId == SectionId
select new {u.Name, u.Email}).toList();
return results;
}