@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
нужно группировать по беседам, далее сделать проекцию для каждой группы, отобрав только последние сообщения
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы