2010-04-12 55 views
0

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

想象我有三个表A,B和C.

A和B具有一个多到多的关系。 B和C有一对多的关系。

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

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

,但是当我尝试包括CI不知道如何做到这一点:

//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); 

感谢您的帮助。

+0

检查有没有上下文中的ID的任何空值。如果外键中有任何空值,则会抛出错误。 – anishMarokey 2010-04-12 15:40:20

回答

1

OK,我发现Any扩展方法...

这是解决方案:

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