2010-12-15 4 views
0

UserId, DatePosted, PostText가있는 Posts 테이블이 있다고 가정 해 보겠습니다. Entity Framework에서 모든 사용자가 가장 최근 게시물 목록을 가져올 수 있도록 SQL을 생성하는 방법은 무엇입니까?Entity Framework/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이 올바른 게시물을 반환하는 것으로 보이지만이를 Entity Framework LINQ로 변환하는 방법을 알 수 없습니다.

+0

"정확한 시간 동일"문제의 경우 게시물 테이블에서 행 변환 열을 사용하고 그 중 최대 하나를 가져옵니다. http://msdn.microsoft.com/en-us/library/ms182776.aspx – Brandon

답변

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

간단하면서도 복잡합니다. 생성 된 SQL을 보았습니다. 중첩 쿼리 네 개와 외부 쿼리 모두가 적용됩니다. 그러나, 그것은 효과가 있었다! – joegtp

관련 문제