所以我有两个表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
感谢任何帮助
答案 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