Получение самых последних сообщений от всех пользователей, использующих Entity Framework / LINQ - PullRequest
0 голосов
/ 15 декабря 2010

Допустим, у меня есть таблица с именем Posts, в которой есть UserId, DatePosted, PostText. Как я могу заставить Entity Framework генерировать SQL, чтобы получить список самых последних сообщений всех пользователей.

В 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.

1 Ответ

0 голосов
/ 15 декабря 2010
IEnumerable<Post> posts = db.Posts
    .GroupBy(p=>p.UserID)
    .Select(p=>p.OrderByDescending(q=>q.DatePosted).First());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...