【发布时间】:2018-01-29 15:46:37
【问题描述】:
我需要从一个对话中获取(例如 2 条)2 条消息
示例:
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).Select 时...... 给我“子查询返回超过 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 行
【问题讨论】:
-
也许向我们展示你可以做什么
-
你如何判断
Id==1组里谁是不允许和其他人一起玩的坏孩子?=! -
我会显示,一分钟
-
已编辑:当我将 .take(number) 放在 mensagens 上时,我收到消息“空引用”。字符串
-
您可以使用子查询从您的组中获取最多 N 行来解决问题。搜索基于 sql 的解决方案可能会有所帮助。
标签: c# mysql entity-framework linq