使用实体框架获取所有用户的最新帖子/ LINQ

使用实体框架获取所有用户的最新帖子/ LINQ

问题描述:

可以说我有一个名为Posts的表,它具有UserId,DatePosted,PostText。我怎样才能让Entity Framework生成SQL来让我看到所有用户最近的帖子。使用实体框架获取所有用户的最新帖子/ LINQ

在SQL我可以做这样的事情(尽管如果用户的帖子在同一确切时间两个职位,这将无法工作,但我想我能设法过滤掉代码的边缘情况)...

select * from 
    Posts p, 
    (select UserId, max(DatePosted) as DatePosted from Posts group by UserId) rp 
    where p.UserId=rp.UserId and p.DatePosted=rp.DatePosted; 

SQL似乎正在返回正确的帖子,但我不知道如何将其转换为实体框架LINQ。

+0

对于“完全相同的时间”问题,请在您的Posts表中使用rowversion列,并且只抓取其中的最大值。 http://msdn.microsoft.com/en-us/library/ms182776.aspx – Brandon 2010-12-15 20:07:46

IEnumerable<Post> posts = db.Posts 
    .GroupBy(p=>p.UserID) 
    .Select(p=>p.OrderByDescending(q=>q.DatePosted).First()); 
+0

这么简单,但非常复杂。看着它生成的SQL,并不是很好 - 4个嵌套查询和一个外部应用程序。但是,它的工作! – joegtp 2010-12-15 20:39:39