实体框架linq查询,根据计数从最喜欢的表中获取前N个postID

时间:2015-04-23 02:16:52

标签: c# database linq entity-framework

我有一个用于跟踪Favorites看起来像

的数据库
[ID]
[PostID]
[userID]
[DateFavorited]

我试图在Linq中编写一个实体框架查询,它将获得在此数据库中最常出现的12 PostIDs

我查看了文档,但我还没有把如何做到这一点。目的是为了最受欢迎的"页

我觉得有一个优雅的解决方案,但我已经让自己感到沮丧,以至于我无法想到这样做的方式,而不会在整个表格中表达这个糟糕的主意。

1 个答案:

答案 0 :(得分:1)

在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 }>