Lista de recebimento (limite) dentro do Groupby no Entity Framework

Preciso levar (por exemplo, 2), 2 mensagens de uma conversa

Não me importo com a aparência da minha lista, mas quero apenas 2 mensagens do id 1, 2 do id2 e continuo

exemplo:

id = idConversation

Id | MessageId | Message
---|-----------|--------
1  | 1         | "asd"
1  | 2         | "asd2"
1  | 3         | "asd3"
1  | 4         | "asd4"
2  | 5         | "asd5"
3  | 6         | "asd6"
3  | 7         | "asd7"
3  | 8         | "asd8"
3  | 9         | "asd9"
3  | 10        | "asd10"
4  | 11        | "asd11"
4  | 12        | "asd12"
4  | 13        | "asd13"

e eu quero isso

Id   MessageId   Message
---|-----------|--------
1  | 1         | "asd"
1  | 2         | "asd2"
2  | 5         | "asd5"
3  | 6         | "asd6"
3  | 7         | "asd7"
4  | 11        | "asd11"
4  | 12        | "asd12"

posso agrupar idConversation, mas não posso limitar a quantidade usando agrupar em uma conversa.

var test = unitOfWork.ChatMensagemRepository.GetAll()
              .Where(x => x.PessoaCodigoPessoa == codigoRemetente)
              .GroupBy(x => x.ChatConversaCodigoChatConversa)
              .Select(group => new
              {
                  codigoChat = group.Key,
                  list = group.Select(mensagem => new
                  {
                      // do stuff
                  })
              }).ToList();

isso está ok ... mas não limite minha lista, quando eu faço o group.take (2). Selecione ..... me dê "Subconsulta retorna mais de 1 linha"

var test = unitOfWork.ChatMensagemRepository.GetAll()
              .Where(x => x.PessoaCodigoPessoa == codigoRemetente)
              .GroupBy(x => x.ChatConversaCodigoChatConversa)
              .Select(group => new
              {
                  codigoChat = group.Key,
                  list = group.Take(2).Select(mensagem => new
                  {
                      // do stuff
                  })
              }).ToList();

erro: subconsulta retorna mais de 1 linha

var test = unitOfWork.ChatMensagemRepository.GetAll()
              .Where(x => x.PessoaCodigoPessoa == codigoRemetente)
              .GroupBy(x => x.ChatConversaCodigoChatConversa)
              .Select(group => new
              {
                  codigoChat = group.Key,
                  list = group.Select(mensagem => new
                  {
                      // do stuff
                  }).take(2)
              }).ToList();

erro: subconsulta retorna mais de 1 linha

questionAnswers(1)

yourAnswerToTheQuestion