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;