LINQ

2012-02-20 7 views
0

を使用して2つのSQLテーブルを照会しました。テーブルPeoplesとテーブルPeopleRequirementsを得ました。LINQ

PeopleRequirements.PeopleIdは、FK制約がPeoples.Idに割り当てられ、ビット(ブール値)フィールドPeopleRequirements.IsActiveも含まれます。

今、私はPeopleRequirementsの行が存在する(行はそれがPeopleId == People.Idに等しい存在する場所)とPeopleRequirements.IsActiveフィールドがtrueされているすべての人々を照会します。

これをEF4とLINQでどうすれば達成できますか?

私はすでにNavigationPropertiesを使用して試してみた:

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

+0

ああ、そうです、これを追加します。 Sec – SeToY

+0

People:PeopleRequirementsは1:1または1:Manyですか? – BlueChippy

+0

それは1:1の関係です – SeToY

答えて

1

これは通常、あなたが2つのエンティティをリンクするために、モデルのナビゲーションプロパティを使用することになり、あなたはEFで物事を行うだろうか、通常ではありません。あなたが通常の方法でリンクされていない場合は、あなたが使用するlinqをheresと言っています。

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

EDIT:ナビゲーションプロパティの周りに、あなたの更新に基づいて、あなたはこれがアクティブであり、実際の人物

EDITにリンクされているすべてのPeopleRequirementsいます

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

を使用することができます。HERESに逆をケース、付属のアクティブな要件を持つ人々

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

あなたが別のものを必要とするかどうかはわかりません。

+0

あなたの答えをありがとう - 私は実際にNavigationPropertiesが存在することを明確にするために私の投稿を編集しました:) – SeToY

+0

うーん、私は何かを逃しているかもしれませんが、あなたの編集は人々の代わりにPeopleRequirements要件が添付されていますか? – SeToY

+0

ええ、あなたはそれを逆にしたかったのですか?添付されたアクティブな要件を持つ人ですか? –