在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));
到那时,您应该能够遍历所有答案(并对其相关实体执行任何需要的操作)
我对 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));
到那时,您应该能够遍历所有答案(并对其相关实体执行任何需要的操作)