linq to sql-查询以查找没有子项的项

linq to sql-查询以查找没有子项的项,linq,linq-to-sql,Linq,Linq To Sql,我正在尝试编写一个不会引发一百万子查询的linq查询 我想在sql中做的是类似这样的事情 select incoming.id, incoming.message, outgoing.message from incoming left join outgoing on incoming.id = outgoing.originalMessageId where outgoing.message is not null 所以基本上我在做左连接,我可以找到没有子对象的对象 有并没有办法做到这一点

我正在尝试编写一个不会引发一百万子查询的linq查询

我想在sql中做的是类似这样的事情

select incoming.id, incoming.message, outgoing.message
from incoming
left join outgoing on incoming.id = outgoing.originalMessageId
where outgoing.message is not null
所以基本上我在做左连接,我可以找到没有子对象的对象

有并没有办法做到这一点,并返回一组键入的“传入”项

听起来很简单,我尝试过几种不同的方法,但我认为我正遭受睡眠不足的折磨,所以我的大脑无法实现这一点:(

提前谢谢
道格

如果我正确理解了你的问题,这应该可以做到:

Incoming
.Join(
    Outgoing
        .Where(o => o.message != null),
    i => i.id,
    o => o.originalMessageId,
    (i,o) => new {Incoming=i, Outgoing=o}
)

如果我正确理解了你的问题,这应该可以做到:

Incoming
.Join(
    Outgoing
        .Where(o => o.message != null),
    i => i.id,
    o => o.originalMessageId,
    (i,o) => new {Incoming=i, Outgoing=o}
)

我很困惑。你确定你的SQL中的列名正确吗?我想应该是select incoming.id…not id.incomingI讨厌使用EF进行外部联接!是的,我的SQL错误-抱歉,我已经修复了它。我还想知道这是一个左联接。由于对右侧表上的属性进行空检查,因此不会有未匹配的如果我的思维帽被拧到了右边,这不是一个内部连接吗?我很困惑。你确定你的SQL中的列名正确吗?我想它应该是select incoming.id…not id.incoming我讨厌用EF做外部连接!是的,我的SQL错了-抱歉,我已经修复了它。我还想知道怎么做这是一个左连接。由于对右侧表上的属性进行了null检查,左侧将不会有不匹配的行。如果我的思维帽拧在右侧,这不是一个内部连接吗?