加入一个包含桥表的表并从主表中获取数据,如果数据存在于桥表中,那么也可以获取它

问题描述 投票:0回答:1

我有两个表“Event(EventId,EventName,....,UpdatedBy)”,“User(UserId,Username ...)”和一个桥表“EventAttendee(EventId,UserId)”

from c in context.Events
from u in c.users 
where c.EventId == eventId
select s

以上是在进行内连接,所以如果EventAttendee表中没有记录,那么我没有得到任何记录。

我想总是从Event表中获取事件详细信息,如果EventAttendee表中有该事件的任何记录,则获取UserId和Username。如何使用Entity框架在linq to sql中执行此操作,因为我的实体模式不显示桥表?

c# entity-framework linq-to-sql
1个回答
2
投票

只需添加DefaultIfEmpty()

from e in context.Events
from u in e.users.DefaultIfEmpty()
where e.EventId == eventId
select ...

不确定sselect中是什么,但它可能是类似的东西

select new { e.EventName, UserId = (int?)u.UserId, u.UserName }

这将为您提供所有与会者的活动列表,或者在没有与会者时为null提供与用户相关的数据。

© www.soinside.com 2019 - 2024. All rights reserved.