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
        }

250项中只有10项返回到页面

有哪些可能的原因

这个问题的答案就在你被//code删节的那段代码中。如果您看到这里发生了什么,您可能会注意到在分页中常用的SkipTake方法:在特定大小的夹块中显示记录。现在,页面大小和页码的默认值分别为101。所以当你调用这个方法而不带可选参数时,你总是得到前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;
}