我正在使用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>();
这可能吗?
var lastEditedVideo = _videos.GroupBy(x => x.originalid ?? x.id)
.Select(g => g.OrderByDescending(m => m.id).FirstOrDefault())
.ToList();