我的服务类中有一个语句,它返回数据库中的所有用户。我目前有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
}
答案 0 :(得分:2)
可能的原因是什么
答案是在//code
缩写的代码段中。如果你看到那里发生了什么,你可能会注意到分页中常用的Skip
和Take
方法:以特定大小的chucks呈现记录。现在,页面大小和页码的默认值分别为10
和1
。因此,在没有可选参数的情况下调用此方法时,总是会得到前10条记录。
如何改变
使用您需要的页面大小和页码调用方法。
而且 - 我会删除= 10
和= 1
来改进此代码。我认为对于分页方法,默认参数是无用的和欺骗性的。您应该始终了解要获取的页码和页面大小。遵循David Tansey的评论:将此更改为始终返回所有记录的方法不是一个好主意。
答案 1 :(得分:1)
您的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;
}
答案 2 :(得分:0)
试试这个
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;
}