簡體   English   中英

實體框架嵌套查詢 Select() 問題

[英]Entity Framework Nested Query Select() Problem

我是實體框架的新手,並嘗試使用Answers表中的外鍵獲取數據,但出現錯誤

不支持嵌套查詢。 操作1='案例' 操作2='收集'

p.Answers.Count()p.Answers.SingleOrDefault().correct_answer作為字符串工作正常但p.Answers.Select(c => c.correct_answer).ToList()拋出nested query error

我想將它保留在一個查詢中,因為可能有數千個問題,所以我不想檢查單獨查詢的答案。 以下是我的代碼。

return db.Questions.Where(p => p.q_id == q_id).Select(p => new QuestionViewModel
{
   q_id = p.q_id,
   q_text = p.q_text,
   q_answer = p.Answers.Count() > 0 ? p.Answers.Select(c => c.correct_answer).ToList() : null
}).OrderBy(x => x.q_id).ToList();

視圖模型

public class QuestionViewModel
{
    public long q_id { get; set; }
    public string q_text { get; set; }
    public List<string> q_answer { get; set; }
}

例外是告訴你 EF 不支持條件子查詢,由這樣的表達式暗示:

p.Answers.Count() > 0 ? p.Answers.Select(c => c.correct_answer).ToList() : null

因此,只需刪除條件運算符:

q_answer = p.Answers.Select(c => c.correct_answer).ToList()

如果問題沒有相關答案, q_answer將填充列表而不是null ,這是集合類型對象的正常(預期)行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM