如何在EF中使用Include执行多对多Linq查询

时间:2010-04-12 11:35:37

标签: c# linq entity-framework

我不知道如何使用Linq和EF执行此查询。

想象一下,我有三张桌子A,B和C.

A和B有多对多的关系。 B和C具有1对多的关系。

我想从B中获取包括C的记录,但是从A的Id中过滤。我可以轻松搞定B的记录:

var result = Context.A.Where(x => x.Id.Equals(aId)).SelectMany(x => x.B);

但是当我尝试包含C时,我不知道该怎么做:

//This doesn't work    
var result = Context.A.Where(x => x.Id.Equals(aId)).SelectMany(x => x.B.Include("C"));

我也试过这个没有运气(它等同于上面的内容):

//Not working
var result = (from a in Context.A.Where(x => x.Id.Equals(aId))
              from b in a.B.Include("C")
              select b);

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好的,我找到了Any扩展方法......

这是解决方案:

var result = (from b in Context.B.Include("C")
              where b.A.Any(x => x.A.Equals(aId))
              select b);