我有一个消息表,其中每行都有发送该消息的用户的 ID。 但我无法编辑数据库,并且没有外键。 没有任何关系可以加入吗?
var msgs = (from m in dbContext.messages
join a in dbContext.users on m.userid equals a.id into sender
where (m.date > LastReceivedDate)
orderby m.date
select new
{
Sender = sender.FirstOrDefault(),
Message = m
})
这是我的代码,它可以运行,但不会返回任何内容。当我取消连接时,我得到结果。
谢谢
除了我对 Craig Stuntz 的 answer 的评论之外,如果您放弃
.FirstOrDefault()
并且可以处理可能是 null
的发件人,您还可以消除第二个查询,并在单个查询中将其全部返回。如果加入后没有用户。
var msgs = (from m in dbContext.messages
join a in dbContext.users on m.userid equals a.id into sender
where (m.date > LastReceivedDate)
orderby m.date
select new
{
Sender = sender,
Message = m
})
没有共同属性的连接是两个实体的叉积。以下是如何使用 LINQ 查询进行叉积: