Entity Framework 嵌套查询 Select() 问题

Entity Framework Nested Query Select() Problem

我是 entity framework 的新手,正在尝试使用来自 Answers table 的外键获取数据,但出现错误

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; }
}

异常告诉您 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,这是正常的(预期) 集合类型对象的行为。