0

我的服务类中有一个语句,它返回数据库中的所有用户。我目前有 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;
    }

获取名册

public virtual IEnumerable<T> GetRoster<T>(int sectionId, Func<IDataRecord, T> modelBinder, int resultsPerPage = 10, int pageNumber = 1)
        {
            //code
        }
4

3 回答 3

2

可能的原因有哪些

答案在您删减的那段代码中//code。如果您看到那里发生的事情,您可能会注意到分页中常用的Skip和方法:在一定大小的卡盘中显示记录。现在页面大小和页码的默认值分别是和。因此,当您在没有可选参数的情况下调用此方法时,您总是会获得前 10 条记录。Take101

以及如何改变

使用您需要的页面大小和页码调用该方法。

和 - 我会通过删除= 10和来改进这段代码= 1。我认为对于分页方法,默认参数是无用且具有欺骗性的。您应该始终注意要获取的页码和页面大小。遵循 David Tansey 的评论:将其更改为始终返回所有记录的方法并不是一个好主意。

于 2013-04-13T20:12:56.970 回答
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;
}
于 2013-04-12T19:24:09.467 回答
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;
}
于 2013-04-12T19:03:49.033 回答