linq问题:查询嵌套集合
我有一个问题类具有公共列表属性,可以包含几个答案 。
我有一个问题库,它负责从XML文件中读取问题及其答案。
所以我有一个问题(列表)的集合与每个问题对象有一个答案的集合,我想查询这个问题的答案(即通过其名称)使用Linq的集合。 我不知道如何正确地做到这一点。
我可以用foreach做,但是我想知道是否有一种纯粹的Linq方法,因为我正在学习它。
find答案。
questions.SelectMany(q => q.Answers).Where(a => a.Name == "SomeName")
find答案的问题。
question.Where(q => q.Answers.Any(a => a.Name == "SomeName"))
事实上,你会得到答案或问题的集合,你将不得不使用First()
, FirstOrDefault()
, Single()
或SingleOrDefault()
根据你的需要得到一个特定的答案或问题。
from question in Questions from answer in question.Answers where answer.Name == something select question // or select answer
使用SelectMany和First / FirstOrDefault(如果您需要一个值)
List<Questions> questions = //initialization; var someAnswer = questions.SelectMany(q=>q.Answers) .First(a=>a.Name =="MyName");
看来你可以使用这样的东西:
var query = from q in questions from a in q.Answers where a.Name == "Answer Name" select a;