使用 Dapper 在 ASP.NET Core MVC 中获取下一条/上一条记录

Get next / previous record in ASP.NET Core MVC using Dapper

我正在将列表数据拉入网格,并在“详细信息视图”中逐一查看它们。我正在尝试添加一个 Next/Previous 按钮,让我可以轻松地在列表中的每个项目的详细信息之间导航。

这是我在控制器中使用的代码

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;

在我的断点内,它只返回“nextID = NULL”,这意味着它不会在我的 URL 结束时生成适当的下一个记录 ID。注意:我在我的控制器中使用 Linq 命名空间,但我没有使用 EF。这是我认为的简单代码。

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

我一直在谷歌搜索,尝试不同的方法,Skip/SkipWhile/Select/FirstOrDefault 的不同组合,但没有任何效果。非常感谢任何对此的帮助或见解。

您的代码中有错误

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

始终为假,因此您将始终让所有记录减一,而不是一条记录。

我假设你有 movie_id 并且你需要在此之后的下一个更大的 ID,所以试试这个代码

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

此查询将 return 下一个 movie_id 在当前 movie_id

之后