2012-02-20 66 views
0

我得到一个表Peoples和一个表PeopleRequirements用LINQ查询两个SQL表

PeopleRequirements.PeopleId被分配了FK约束到Peoples.Id并且还包含一个位(布尔值)字段PeopleRequirements.IsActive

现在我想查询到其在PeopleRequirements一个行存在(其中行存在,等于PeopleId == People.Id)和PeopleRequirements.IsActivetrue所有的人。

如何用EF4和LINQ实现这一目标?

我已经使用NavigationProperties尝试:

e.QueryableSource = _dataContext.Peoples.Where(a => a.EMail != string.Empty && a.EMail != null && a.PeopleRequirements.Count > 0);

+0

噢,是的,对 - 会加上这个。秒 – SeToY 2012-02-20 11:36:44

+0

是人:人要求1:1或1:很多? – BlueChippy 2012-02-20 11:55:07

+0

这是一个1:1的关系 – SeToY 2012-02-20 11:57:15

回答

1

这通常不是你会怎么做事情EF,通常你会使用导航属性在模型的两个实体联系起来。话虽如此,如果他们没有以正常的方式联系起来,你会使用linq。

from pplReq in PeopleRequirements 
from person in People 
where pplReq.PeopleId == person.Id 
where pplReq.IsActive 
select pplReq; 

编辑:根据各地的导航属性的更新,你可以使用

from pr in _dataContext.PeopleRequirements 
where pr.People != null 
where pr.IsActive 
select pr 

这将发现这是积极的,并链接到一个实际的人

编辑所有PeopleRequirements:继承人的交谈情况下,附有主动要求的人

from person in _dataContext.Peoples 
from req in person.PeopleRequirements 
where req.IsActive 
select distinct person 

即时通讯不太确定您是否需要区分。

+0

谢谢你的回答 - 我编辑了我的帖子,以澄清确实存在NavigationProperties :) – SeToY 2012-02-20 11:38:28

+0

嗯,我可能会错过某些东西,但不会取得PeopleRequirements而不是人民有附加条件? – SeToY 2012-02-20 11:47:58

+0

是的,你确实想要它吗?附加主动要求的人员? – 2012-02-20 11:58:19