我有一个消息表,其中包含在每行中发送它的用户的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
})
这是我的代码,它运行,但永远不会返回任何东西。当我离开时,我得到了结果。
由于
答案 0 :(得分:3)
除了我对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
})
答案 1 :(得分:0)
加入是两个实体的交叉产品。这里是如何使用LINQ查询来交叉产品: