- 我得到了
Movements
和Equipment
... - 但不是所有
Movements
都具有Equipment
。 - 例如,“后蹲”需要杠铃、平板等,但“俯卧撑”不需要任何设备。
- 我有一个桥表,它链接了有
Equipment
的Movements
. - 我需要一个
OUTER JOIN
,这样我就可以访问所有的Movements
,即使他们没有任何Equipment
。 - ......我希望这是有意义的。
- 我下面的代码只产生在桥表中具有匹配的
Equipment
记录的Movements
。
Movements = (
from mvmt in applicationDbContext.Movements
join mvmteq in applicationDbContext.MovementEquips on mvmt .MvmtId equals mvmteq.MvmtId
join equip in applicationDbContext.Equipment on mvmteq.EquipId equals equip .EquipId
orderby mvmt.MvmtId
select new Movement
{
MvmtId = mvmt.MvmtId,
MvmtDescr = mvmt.MvmtDescr
})
.ToList();
3条答案
按热度按时间rhfm7lfc1#
请参阅https://learn.microsoft.com/en-gb/dotnet/csharp/linq/perform-left-outer-joins
和
http://msdn.microsoft.com/en-us/library/bb397895.aspx
bxgwgixi2#
fkvaft9z3#
OUTER JOIN
查询。Movement
和所有Equipment
数据,则需要执行以下操作:上面的代码“工作”是因为实体框架
DbContext
执行 * 魔术 * 每当您加载数据到DbContext
(从ToListAsync
和LoadAsync
),使所有附加和加载的实体将有他们的引用和导航属性的setter调用。