我有一张表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);
答案 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
我不太确定你是否需要不同的。