我有两个实体,我想合并并只返回一个
IQueryable
从中。举个例子,想象一下我有一个会议应用
Speakers
和
Sessions
和
Events
.
如果我把所有三个都加入,然后我要求所有与一个演讲者相关的会议(在所有事件中),我会得到每个事件的返回记录,而实际上我只想要一个演讲者记录,其中包含所有会议的细节。
也就是说,我的EF查询如下所示:
var q1 = from speaker in db.speakers
join sessions in db.sessions on speaker.Id equals session.speakerId
join event in db.sessions on session.EventId equals event.Id
where speaker.Id = 101
我想要的是一种先创建说话人查询的能力
var q2 = from speaker in db.speakers
where speaker.Id = 101
然后,创建另一个查询,为我提供多年来所有演讲者的会话
var q3 = join sessions in db.sessions on speaker.Id equals session.speakerId
join event in db.sessions on session.EventId equals event.Id
where session.AttendeeId = 101
最后,我真的在寻找一个查询,qFinal将它们结合起来。
var qFinal = q2 that has a collection of sessions, or basically, what q3 returns.
记住
Attendee
实体包含会话的集合。
我意识到我上面的伪代码并没有真正编译,但我真正的问题要复杂得多,我认为用更简单的术语来解释更容易。