使用嵌套子查询的EF Linq多个内部联接

时间:2013-06-19 02:39:24

标签: linq entity-framework nested-queries

所以我有两个表Site和Contact,通过ContactSites表有多对多的关系。 Site和Contact表都有一个名为Deleted的布尔属性。我试图编写一个LINQ查询,列出所有具有已删除属性= false且具有已删除属性= false的相关网站的联系人

以下是我正在使用的代码:

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()}

但结果似乎就像外连接和我想要的内连接一样。

我正在寻找一种方法来使用嵌套子查询而不是连接,这将是:

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

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

以下是诀窍:

from c in db.Contacts
from co in c.Communities
where co.Deleted == false
select c

当您使用LINQ to Entities时,所有这些都在导航属性中,因此正在进行连接 在“来自co.com.Communities”。 我认为我的困惑是我使用的是使用LINQ to SQL的LinqPAD

这个链接很有帮助,让我明白了:

http://peter.hahndorf.eu/blog/post/2010/12/31/UsingLinqInManytomanySelectScenarios