首先,关于我的桌面设置:
Group:
groupId - int
groupName - varchar
Schedule:
scheduleId - int
scheduleName - varchar
Group_Schedules
scheduleId - int/fk to Schedule
groupId - int/fk to Group
我正在使用EF,在上面的场景中,没有创建EF实体来表示Group_Schedules,而是将一个集合添加到表示另一端的Group和Schedule表中。
我需要获取属于某个计划的所有群组,并且我的返回值为IQueryable<Group>
。 I.e(不,由于EF生成桥表的方式,这不起作用):
var g = from g in context.Groups
where g.Group_Schedule.scheduleId = 1 // This doesn't work because Group_Schedule is a collection of Schedule
select g;
有一种优雅的方式来获取我需要的数据吗?
答案 0 :(得分:1)
这两个都会返回IQueryable<Group>
:
var groups = from g in db.Groups
where g.Schedules.Any(s => s.scheduleId == 1)
select g;
var groups = (from s in db.Schedules
where s.scheduleId == 1
select s.Groups).SelectMany(g => g);