如何从linq中的子表中选择列

时间:2015-08-14 13:27:44

标签: c# sql .net linq entity-framework

如何在linq查询中包含二级表列? 我不希望.Net执行延迟加载,因为还有其他表链接到这些表。

表格是

Quiz:    
 - Id
 - Name

Questions:    
 - Id
 - Name
 - quizId

Options:   
 - id
 - Name
 - QuestionId

测验和问题具有一对多的关系。对选项的问题也有一对多的关系。

var quiz=db.Quiz.include(a=>a.Questions)......ToList();

如何在linq查询中包含选项列?

3 个答案:

答案 0 :(得分:2)

如果您想要永久加载实体的孙子,只要您正确映射了关系,下面的代码就可以实现这一点。

var quiz = db.Quiz
             .Include(a => a.Questions.Select(q => q.Options))
             .ToList();

答案 1 :(得分:0)

添加到Questions属性选项作为ICollection和映射为一对多。 然后你可以使用

var quiz=db.Quiz.include(a=>a.Questions).include(a=>a.Questions.Options).......ToList();

或者

答案 2 :(得分:0)

我很确定你可以做多个Include() s:

var quiz = db.Quiz
           .Include(x => x.Questions)
           .Include("Questions.Options")
           .ToList();

虽然不像@ pwee167的答案那样输入不完全强烈,但是对于您希望包含在查询中的每个集合,它都是描述性的。