Это вызвано тем, что провайдер EF для MySQL или сам сервер не может перевести этот linq в SQL, поэтому сначала вы должны получить данные с сервера, а затем сгруппировать их с

ужно взять (например, 2) 2 сообщения из разговора

Меня не волнует, как выглядит мой список, но я хочу только 2 сообщения с id 1, 2 сообщения с id2 и продолжаю

пример:

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"

и я хочу этого

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

я могу grouby idConversation, но я не могу ограничить количество, используя grouby в разговоре.

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();

это нормально ... но не ограничивайте мой список, когда я делаю group.take (2). Выберите ....., дайте мне "Подзапрос возвращает более 1 строки"

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();

ошибка: подзапрос возвращает более 1 строки

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();

ошибка: подзапрос возвращает более 1 строки

Ответы на вопрос(0)

Ваш ответ на вопрос