Ajuda com querie em Linq

.NET

C#

Lambda Expression

LINQ

30/10/2018

Eu tenho uma tabela com o seguintes colunas:


Id | ContaID |InteressadoId | RemetenteId | DestinatarioId | Msg
----------------------------------------------------------------------------------------
1 | 2 |João | João | Maria |bla bla bla...
2 | 2 |João | Maria | João |ble ble ble...
3 | 3 |Erik | Erik | Mark |O Amadeu ganhou a promoção...
4 | 3 |Erik | Mark | Erik |Eu sabia...
5 | 3 |Erik | Mark | Erik |Vou pedir as contas...
6 | 4 |Jake | Jake | Mara |As oito da noite lá em casa...


O cenário que eu preciso é que cada usuário que esteja logado, carregue suas conversas, então eu tenho a seguinte querie:

var msg = from p in db.Chats
                          orderby p.ChatId descending
                          group p by new { p.ContaId, p.InteressadoId } into g
                          select new { Interessado = g.Key, Conta = g.Select(m => m.Mensagem).First()};


Essa querie me retorna as ultimas msgs dos usuários , como eu posso retornar, agrupada, a última mensagem, o interessado e a conta?
Claudinei Santos

Claudinei Santos

Curtidas 0

Respostas

Renato Dias

Renato Dias

30/10/2018

Fala Claudinei! Segue o código:

var msg = db.Chats.GroupBy(x => new { x.ContaId, x.InteressadoId }).OrderByDescending(c => c.id).Select(gr => new { Interessado= gr.Key, c => c.Msg, c.DestinatarioId, c.RemetenteId }).FirstOrDefault();
GOSTEI 0
POSTAR