实体框架 - 如何根据桥表值查询对象?

时间:2011-10-28 19:57:04

标签: c#-4.0 entity-framework-4

首先,关于我的桌面设置:

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;

有一种优雅的方式来获取我需要的数据吗?

1 个答案:

答案 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);