Masriyah
Masriyah

Reputation: 2505

syntax to return a number of results per page

I have this linq statement that returns result and i wanted to add the specifications of how many items are displayed per page. I know the default is 10 per page how can i change it to 40?

var _roster = DataCBase.StoredProcedures.GetUser<Users>(userID, r => new Users
        {
            Name = RosterColumnMap.Name(r),
            Email = RosterColumnMap.Email(r)
        });

Get User

public virtual IEnumerable<T> GetUser<T>(int userId, Func<IDataRecord, T> modelBinder, int resultsPerPage = 10, int pageNumber = 1)
    {
        if (userId < 1)
            throw new NullReferenceException("The sectionId cannot be null, when retreiving an element");

        if (resultsPerPage < 1)
            resultsPerPage = 1;     // enforce bare minimum result set

        if (pageNumber < 1)
            pageNumber = 1;         // enforce one-based page numbering

        SqlCommand _command = new SqlCommand("dbo.GetUser");
        _command.CommandType = CommandType.StoredProcedure;
        _command.Parameters.Add(new SqlParameter { ParameterName = "userId", SqlDbType = SqlDbType.Int, Value = userId });
        _command.Parameters.Add(new SqlParameter { ParameterName = "resultsPerPage", SqlDbType = SqlDbType.Int, Value = resultsPerPage });
        _command.Parameters.Add(new SqlParameter { ParameterName = "pageNumber", SqlDbType = SqlDbType.Int, Value = pageNumber });

        return DbInstance.ExecuteAs<T>(_command, modelBinder);
    }

Upvotes: 0

Views: 90

Answers (1)

p.s.w.g
p.s.w.g

Reputation: 149030

Neither Linq nor entity framework have any default number of records 'per page'. But since your GetUser function includes a resultsPerPage parameter, you can just do this:

var _roster = DataCBase.StoredProcedures.GetUser<Users>(userID, r => new Users
    {
        Name = RosterColumnMap.Name(r),
        Email = RosterColumnMap.Email(r)
    }, 40);

To limit the number of results in Linq use the the Enumerable.Take method:

var _roster = DataCBase.StoredProcedures.GetUser<Users>(userID, r => new Users
    {
        Name = RosterColumnMap.Name(r),
        Email = RosterColumnMap.Email(r)
    }).Take(40);

Upvotes: 1

Related Questions