在linq中以一对多关系获取大多数内部类型对象

getting most inner type object in one to many relation in linq

我对 linq.i 很陌生,在数据库中有 3 个实体

 TYPE, QUESTION,ANSWER

每种类型都有很多问题 每个问题都有很多答案, 我急切地加载了 IList,它有所有的问题和答案,我需要获取所有的答案而不管它的类型和问题,我的意思是我需要得到它的类型是答案类型的结果,它在数据库中有所有的答案。 我有

IList<TYPE> types=context.TYPES.ToList();

但我不知道如何获得所有答案。

包括 "QUESTION" 和 "QUESTION.ANSWER" 通过外键关系为您提供列表。

IList<TYPE> types = context.TYPES.Include("QUESTION").Include("QUESTION.ANSWER").ToList();

检查

var questions = types.SelectMany(t => t.QUESTION).ToList();
var answers = questionList.SelectMany(t => t.ANSWER).ToList();

但我认为你应该直接这样做。

IList<QUESTION> questions = context.QUESTION.Include("TYPE").Include("ANSWER").ToList();

据我了解你的问题,你想从检索到的 IList<TYPE>.

中获得所有答案

首先,您必须在数据库查询中包含所有子类型:

allTypes = db.TYPES.Include("QUESTIONS").Include("QUESTIONS.ANSWERS").ToList();

然后,只需使用 SelectMany LinQ 方法展平层次结构即可:

var items = allTypes.SelectMany(t => t.QUESTIONS.SelectMany(a => a.ANSWERS));

到那时,您应该能够遍历所有答案(并对其相关实体执行任何需要的操作)