我發現有幾次人們問同樣的問題,但似乎答案從來沒有令人滿意,儘管它應該很容易(理論上)。這裏是我的問題:Linq to entities - 如何選擇實體集合上具有where條件的實體?
我有一個名爲「公司」的實體,其中我有一個entityCollection「Employees」(一對多)。我需要檢索的所有公司,併爲他們每個人,我只希望員工有年齡大於21
我想:
Return context.Companies.Include("Employees").Where(c => c.Employees.Where(e => e.Age > 21).Count() > 0)
這並不工作,因爲它給了我所有的員工每個公司如果有至少一個21上方(它實際上比。任何相同的())
我想:
Return context.Companies.Include("Employees").Select(c => New Company {
.Id = c.Id,
.Employees = c.Employees.Where(Function(e) e.Age > 24)
}).ToList()
這並沒有工作,要麼(雖然它會一直perfe ct),它給了我以下錯誤:實體或複雜類型'MyModel.Company'不能在LINQ to Entities查詢中構造。
您如何才能選擇我所有的公司,而且每個公司的員工都超過21歲?目前,我選擇了所有客戶端,我篩選了我的員工,但我不喜歡該解決方案。
任何人都可以幫助我嗎?
謝謝Morteza Manavi-Parast,它會做的工作!儘管如此,我很難說服自己,在一個獨特的查詢中這樣做並沒有在Entity框架中實現。這是一個比較常見的情況......作爲證明,這個論壇上有很多像我一樣的問題。
我很驚訝......也許是下一個版本?
要清楚,我需要公司的名單,因爲我直接結合我查詢到DataGrid的結果。對於您的信息,當我點擊一行數據網格(選擇一家公司)時,我有第二個網格,其中包含來自entityCollection的員工(21歲以上)。
我很困惑,你是否想要返回一系列*公司*或*員工*?如果是後者,「公司」與你的查詢有什麼關係? (因爲你似乎正在獲取所有這些) – 2010-10-12 12:59:45
在客戶端,我有一個數據網格綁定到直接來自此查詢的公司集合。 – Renaud 2010-10-12 13:30:43