只有10个结果项目返回250个项目中的页面

时间:2013-04-12 18:50:39

标签: c# asp.net-mvc linq

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

3 个答案:

答案 0 :(得分:2)

  

可能的原因是什么

答案是在//code缩写的代码段中。如果你看到那里发生了什么,你可能会注意到分页中常用的SkipTake方法:以特定大小的chucks呈现记录。现在,页面大小和页码的默认值分别为101。因此,在没有可选参数的情况下调用此方法时,总是会得到前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;
}
相关问题