我正在學習EF和LINQ to EF。我們正在使用LINQ方法而不是LINQ表達式。實體框架使用LINQ方法通過NavigationProperty進行簡單篩選
我想從我的2個實體做一個非常簡單的查詢。
NavigationGroup與NavigationGroupLocation是一對多的關係。導航屬性,NavigationGroup被稱爲「NavigationGroupLocations」
在我看來這個代碼應工作:
List<NavigationGroup> groups = db.DataModel.NavigationGroups.Where(g => g.NavigationGroupLocations.Location == 1).ToList();
位置是我NavigationGroupLocation實體一個int。
有人可以解釋爲什麼這不起作用,以及通過導航屬性過濾的正確方法是什麼?我在表達式語法中看到了很多例子,似乎無法將它與方法語法聯繫起來。
我使用C#4 & EF 4.
感謝您的幫助!
編輯
我看到了,因爲我的導航屬性是一個集合,我不能得到的個人財產。所以我想這個代碼:
.Where(g => g.NavigationGroupLocations.Any(l => l.Location == 1));
當我嘗試運行它,我得到這個錯誤:
Cannot implicitly convert type 'System.Linq.IQueryable<ME.Data.ECom.NavigationGroup>' to 'System.Data.Objects.ObjectSet<ME.Data.ECom.NavigationGroup>'. An explicit conversion exists (are you missing a cast?)
我應該怎麼做?
你如何做linq方法語法加入?你能看看我的編輯,看看我是否用正確的方向使用.Any()? – Jared 2012-04-13 18:50:23