我已閱讀了一堆關於此的不同主題,但我還沒有找到我在找什麼。linq過濾子集合
我有一個EF查詢是這樣的:
var query = this.ObjectContext.Questions
.Include("AnswerKey").Include("QuestionTypes")
.Where(o => o.SurveyQuestions.Any(o2 => o2.SurveyID == id));
這是工作的罰款,直到我意識到,我並沒有考慮到的AnswerKey子集合我主動標誌。換句話說,這個查詢應該加載所有具有3的父調查問題(它確實)的問題,但只加載具有有效標誌爲真的答案鍵。
我已經試過這樣:
var query = this.ObjectContext.AnswerKey
.Include("Questions.QuestionTypes")
.Where(ak =>
ak.Active == true &&
ak.Questions.SurveyQuestions.Any(sq => sq.SurveyID == 3) &&
ak.Questions.Active == true)
.AsEnumerable()
.Select(ak => ak.Questions).AsQueryable();
但它返回每個answerkey 1個問題。所以如果一個問題有4個答案,它顯示了4倍...
我該怎麼做?
您應該使用您發佈的鏈接中提供的解決方案,因爲您只實現了真正需要的實體,所以這將更有效。 – BrokenGlass 2011-06-01 17:47:16
我認爲你的效率一樣。同一作者也在這裏發佈了一個類似的例子http://stackoverflow.com/questions/1535443/ef-query-with-conditinal-include/1535618 – ecathell 2011-06-01 20:02:02