2012-06-17 99 views
0

我有以下兩個表格過濾LINQ實體包括查詢

Groups 
Id (int) 

People 
Id (int) 
GroupId (int, Groups.Id) 
IsSelected (bit) 

這將在一個查詢返回所有的成員(人民)所有羣體

var grps = myDatabase.Groups.Include("People"); 

我如何寫一個將返回所有已選擇人員的組的查詢(IsSelected = true)?

回答

1

讓我知道,如果這個工程

var grps = myDatabase.Groups.Select(g=> new { g, people = g.People.Where(p=>p.IsSelected)}); 
+0

才得以運行。謝謝 – James

+0

在LINQ to SQL中,您可以使用DataLoadOptions.LoadWith來添加額外的過濾。使用EF,您將被降級爲子查詢,如本例所示。 –

0

您將要使用的「加入」的方法,就像這樣:

(from g in myDatabase.Groups 
join p in myDatabase.People on g.Id equals p.GroupId 
where p.IsSelected == true 
select g); 

這會給你那裏有選擇的所有人羣。

+0

這將只返回組,選擇的人。它應該返回所有組,不管它們是否包含人物,但是如果它們包含人物,那麼只包含選定的人物 – James

+0

啊,我誤解了你的意圖。 – awbergs

-1

入住或退房手續。凡()

喜歡的東西

var grps = myDatabase.Groups.Include("People").Where(x => x.IsSelected); 
//x => !x.IsSelected for false 
+0

這不起作用。 x是組而不是人 – James

+0

這只是擺弄周圍的語法,希望它開始巧合工作。 – usr

+0

嗯,不,我只是建議.where()作爲過濾方式,每個問題。 「類似的東西」 - 是一個指出它的指針。但足夠公平的是,複製和粘貼OP聲明並將其堅持到底是很sl sl的。我很糟糕。經過一些修改後, – user1166147