我一直在設計一個查詢來檢索候選人已經嘗試的問題以及針對候選人未嘗試的問題的另一個查詢時遇到了太多麻煩。這適用於考試/考試/表格/調查類型的申請。Linq到具有多級子引用的實體查詢
的情況是候選人(OAS_UserDetail)與多組(OAS_Group)相關聯。 一組可以有很多測試。 一個測試可以有很多問題。 一個問題可以有很多選項。
當候選人嘗試提問時,它存儲在引用會話的表TestResponse中(表TestResponse中的answerSelected實際上是QuestionOption.Id)。我相信TestSession可以作爲TestResponse的橋樑,以獲取用戶,測試和組的詳細信息。
這對我來說似乎是一個很好的但有點複雜的設計,只要通過Linq來查詢。 下面是我試圖做的事情,並被卡住,並最終在方法語法而不是查詢語法中編寫Linq。
OAS.DataModels.OAS_Question questionsAttempted =
from q in db.OAS_Questions
where q.OAS_Test.OAS_Group.Candidates.Contains(
db.OAS_UserDetails.Single(u => u.UserName == HttpContext.User.Identity.Name)
)
select q;