Home > front end >  Get next / previous record in ASP.NET Core MVC using Dapper
Get next / previous record in ASP.NET Core MVC using Dapper

Time:01-11

I'm pulling list data into a grid, and viewing them one-by-one in a "detail view". I'm trying to add a Next/Previous button that will allow me to easily navigate between the details of each item from my list.

Here is the code I'm using within my controller

var nextID = _movieRepository.GetAll()
                             .OrderBy(i => i.movie_id)
                             .SkipWhile(i => i.movie_id != i.movie_id)
                             .Skip(1)
                             .Select(i => i.movie_id);

ViewBag.NextID = nextID;

Within my breakpoint, it is only returning "nextID = NULL" which means it does not generate the appropriate next Record ID at the end of my URL. Note: I am using the Linq namespace in my controller, but I'm not using EF. This is the simple code I have in my view.

<a href="/@ViewData["Controller"]/@ViewData["Action"]/@ViewBag.nextID"> Next Movie </a>

I've been Googling, trying different methods, different combination of the Skip/SkipWhile/Select/FirstOrDefault, and nothing has worked. Any assistance or insight on this is much appreciated.

CodePudding user response:

you have a bug in your code

  .SkipWhile(i => i.movie_id != i.movie_id)

is always false, so you will always have all records minus one, instead of one record.

I assume that you have movie_id and you need the next larger id after this , so try this code

var nextID = _movieRepository.GetAll()
                             .OrderBy(i => i.movie_id)
                             .Where(i => i.movie_id > movie_Id )
                             .Select(i => i.movie_id)
                             .FirstOrDefault();

this query will return next movie_id after current movie_id

  •  Tags:  
  • Related