我正在尝试返回一个包含用户所有聊天好友的列表。Chat Buddies 的意思是所有的用户 ID,在消息中我是发送者还是接收者。 这是我的代码:
public List<string> GetUserMessagesGrouped(string userId)
{
var a = _context.Users.FirstOrDefault(x => x.Id == userId).SentMessages.Select(m => m.ReceiverID);
var b = _context.Users.FirstOrDefault(y => y.Id == userId).ReceivedMessages.Select(m => m.SenderID);
var ChatBuddies = a.Concat(b).Distinct();
return ChatBuddies.ToList();
}
问题是: 我收到此异常。 System.ArgumentNullException: '值不能为空。'
尽管在我的数据库中,我正在测试的这个确切用户有 SentMessages 和 ReceivedMessages。
固定点
var user = _context.Users.Include("ReceivedMessages").Include("SentMessages").FirstOrDefault(x => x.Id == userId);
var received = user.ReceivedMessages.Select(r => r.SenderID).ToList();
var sender = _context.Messages.Where(m => m.SenderID == userId).Select(s => s.ReceiverID).ToList();
var ChatBuddies = received.Union(sender).ToList();
return ChatBuddies;
关键是使用,.Include("ReceivedMessages").Include("SentMessages")所以他们不是null。
相关分类