加入一个包含桥表的表并从主表中获取数据,如果数据存在于桥表中,那么也可以获取它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加入一个包含桥表的表并从主表中获取数据,如果数据存在于桥表中,那么也可以获取它相关的知识,希望对你有一定的参考价值。
我有两个表“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中执行此操作,因为我的实体模式不显示桥表?
答案
只需添加DefaultIfEmpty()
:
from e in context.Events
from u in e.users.DefaultIfEmpty()
where e.EventId == eventId
select ...
不确定s
在select
中是什么,但它可能是类似的东西
select new { e.EventName, UserId = (int?)u.UserId, u.UserName }
这将为您提供所有与会者的活动列表,或者在没有与会者时为null
提供与用户相关的数据。
以上是关于加入一个包含桥表的表并从主表中获取数据,如果数据存在于桥表中,那么也可以获取它的主要内容,如果未能解决你的问题,请参考以下文章