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



我将列表数据拉到一个网格中,并在"详细视图";。我正在尝试添加一个"下一个/上一个"按钮,使我能够轻松地在列表中的每个项目的详细信息之间导航。

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

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)

总是false,所以您将始终拥有所有记录减去一,而不是一条记录。

我假设你有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();

该查询将返回当前movie_id 之后的下一个movie_id

最新更新