我是实体框架的新成员,并尝试使用Answers
表中的外键获取数据,但出现错误The nested query is not supported. Operation1='Case' Operation2='Collect'
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();
ViewModel
public class QuestionViewModel
{
public long q_id { get; set; }
public string q_text { get; set; }
public List<string> q_answer { get; set; }
}
答案 0 :(得分:2)
一个例外是告诉您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
将填充为 empty 列表,而不是null
,这是集合类型的正常(预期)行为对象。