2013-06-19 146 views
0

因此,我有两个表格Site和Contact通过ContactSites表具有多对多关系。网站和联系人表格都有一个名为已删除的布尔属性。我想尝试写一个LINQ查询其中列出了有删除的属性= false,并具有相关网站的所有联系人也有删除的属性=假EF Linq使用嵌套子查询的多个内部联接

这里是我使用的代码:

from c in Contacts 
where c.Deleted == false 
select new{c.LName, c.FName, SiteContactSites = 
          (from cs in ContactSites 
          where cs.Contact_ID == c.ID 
          select new{ cs.Contact_ID, cs.Site_ID, Sites = 
                   (from s in Sites 
                   where cs.Site_ID == s.ID && 
                   s.Deleted == false 
                   select cs).First()}).First()} 

但结果看起来像一个外部连接vs我想要的内部连接。

我特别寻找一种方式,以嵌套子查询做到这一点,而不是加入这将是:

from c in Contacts 
join cs in ContactSites on c.ID equals cs.Contact_ID 
join s in Sites on cs.Site_ID equals s.ID 
where c.Deleted == false && s.Deleted == false 
select c 

任何帮助表示赞赏

+0

请问第二个 - 简单,简洁 - 代码示例工作?如果是这样,你为什么要子查询? – lisp

+0

以及第二个代码示例中linqpad写作时,但在C#中vs2012由于没有用于ContactSites – user2129585

+0

没有模型,但随后第一querry将不能工作也不行,因为你在ContactSites参加工作。 – lisp

回答