C# 实体框架嵌套查询选择()问题

C# 实体框架嵌套查询选择()问题,c#,sql-server,entity-framework,linq,entity-framework-6,C#,Sql Server,Entity Framework,Linq,Entity Framework 6,我是实体框架的新手,尝试使用外键从答案表中获取数据,但我遇到了错误 不支持嵌套查询。操作1='Case' 操作2='Collect' p.Answers.Count() 我想把它保存在一个查询中,因为可能有数千个问题,所以我不想检查单独查询的答案。下面是我的代码 return db.Questions.Where(p => p.q_id == q_id).Select(p => new QuestionViewModel { q_id = p.q_id, q_text =

我是实体框架的新手,尝试使用外键从
答案
表中获取数据,但我遇到了错误

不支持嵌套查询。操作1='Case' 操作2='Collect'

p.Answers.Count()

我想把它保存在一个查询中,因为可能有数千个问题,所以我不想检查单独查询的答案。下面是我的代码

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; }
}
公共类问题视图模型
{
公共长q_id{get;set;}
公共字符串q_text{get;set;}
公共列表q_答案{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\u answer
将用空列表填充,而不是
null
,这是集合类型对象的正常(预期)行为。

例外情况是,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\u-answer
将填充空列表,而不是
null
,这是集合类型对象的正常(预期)行为。

谢谢,我不知道EF不支持条件子查询。没有条件子查询,它工作得很好。再次感谢Hanks,我不知道EF不支持条件子查询。没有条件子查询,它工作得很好。再次感谢