2010-12-15 37 views
0

可以說我有一個名爲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

回答

0
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