使用LINQ查询两个SQL表

时间:2012-02-20 11:30:56

标签: c# linq entity-framework syntax

我有一张表Peoples和一张表PeopleRequirements

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

现在,我想查询PeopleRequirements中存在一行的所有人(其中存在等于PeopleId == People.Id的行)且PeopleRequirements.IsActive字段为true。< / p>

如何使用EF4和LINQ实现此目的?

我已经尝试过使用NavigationProperties:

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

1 个答案:

答案 0 :(得分: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

我不太确定你是否需要不同的。