@Jasulan98

Entity Framwork: Получить последнее сообщение из каждой беседы?

Есть таблица Chats

Id Id_1 Id_2 Message DataTime
-------------------------
1 | 95 | 45 | Hello 2018.01.21
2 | 12 | 95 | Hi ....
3 | 32 | 45 | How
4 | 32 | 12 | Hi
5 | 45 | 32 | Hello
6 | 12 | 45 | Hi

Мой контроллер
...
[HttpPost]
public async Task<JsonResult> ChatList(int person_id)
{
  IEnumerable<Chat> chats = db.Chats.Where(p=>(p.Id_1==person_id||p.Id_2==person_id));
   return Json(chats);
}


Я тут получаю весь сообщение пользователя.Как получить последние сообщение каждой беседы?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 3
@nicebmw9
Что было дальше ?
На коллекции вызвать метод Last().
Если нужно несколько последних, то Skip(arr.count -(минус) количество сообщений, которое нужно вывести)
Ответ написан
Комментировать
@mefutu
У вас асинхронные операции, как я понял, может произойти, что сообщение было последним, но в результате многопоточности записалось предпоследним., тогда Last() выдаст неверную инфу.
Здесь сначала надо сортировать по DateTime с выбором самого позднего через Last().
Ответ написан
Комментировать
@chibitko
нужно группировать по беседам, далее сделать проекцию для каждой группы, отобрав только последние сообщения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы