从该SQL创建一个LINQ语句,以获取数据库中每个原始记录的最新编辑

本文关键字:数据库 获取 原始 最新 记录 编辑 创建 SQL 语句 LINQ 一个 | 更新日期: 2023-09-27 18:29:40

我正在使用MVC创建一个web应用程序,该应用程序允许用户编辑现有记录,这些记录作为引用所述记录的第一个实例的新记录存储在数据库中。

有一个名为"OriginalID"的列,因此当编辑视频时,该编辑具有更高的ID,但始终可以使用"Original ID"列进行链接,下面的SQL语句将返回每个视频的最新数据。

我想实现类似以下的东西,但使用LINQ:

SELECT Title, Genre, Price, PegiCert, Release, Desc
FROM   video vid 
WHERE  vid.id = ( SELECT TOP 1 vid2.id 
                  FROM   video vid2
                  WHERE  ISNULL(vid2.originalid, vid2.id) = ISNULL(vid.originalid, vid.id) 
                  ORDER BY id DESC )

我想返回一个视频列表,但只返回最新编辑。

IQueryable<Video> _videos;
_videos = // LINQ statement
return _videos.ToList<Video>();

这可能吗?

从该SQL创建一个LINQ语句,以获取数据库中每个原始记录的最新编辑

var lastEditedVideo = _videos.GroupBy(x => x.originalid ?? x.id)
                             .Select(g => g.OrderByDescending(m => m.id).FirstOrDefault())
                             .ToList();