我有一个数据库来跟踪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 }>
.