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

本文关键字:大多数 内部 类型 对象 一对多 linq 关系 | 更新日期: 2023-09-27 18:13:38

我对linq很陌生。我有3个实体在DB

 TYPE, QUESTION,ANSWER

每个类型都有许多问题每个问题都有很多答案,我急切地加载列表,其中有所有的问题和答案,我需要获取所有的答案无视它的类型和问题,我的意思是我需要有结果,它的类型是答案的类型,其中所有的答案在DB。我有

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

但是我不知道如何得到所有的答案

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

据我所知,您希望从检索到的IList<TYPE>中获得所有答案。

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

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

然后,使用SelectMany LinQ方法将层次结构扁平化:

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

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

包含"QUESTION"answers"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();