实体框架 linq 查询,根据计数从收藏夹表中获取前 N 个 postID



我有一个数据库来跟踪Favorites看起来像

[ID]
[PostID]
[userID]
[DateFavorited]

我正在尝试在 Linq 中编写一个实体框架查询,该查询将获取此数据库中出现频率最高的 12 个PostIDs

我已经查看了文档,但我只是没有整理如何做到这一点。目的是"最受收藏"的页面

我觉得有一个优雅的解决方案,但我让自己感到沮丧,以至于我无法想到在不让整张桌子感到这是一个坏主意的情况下做到这一点的方法。

在SQL中,这将是:

SELECT
    TOP 12
    PostID,
    COUNT(*) As FavCount
FROM
    Favorites
GROUP BY
    PostID
ORDER BY
    FavCount DESC

在 Linq 中,我相信它会是:

var ret = db.Favorites.GroupBy(
    fav => fav.PostId
).Select(
    favGroup => new {
        PostId = favGroup.Key,
        Count = favGroup.Count()
    }
).OrderBy(
    row => row.Count
).Take( 12 );

随着ret的类型正在IEnumerable<Anonymous{ PostId, Count }>.

最新更新