linq问题:查询嵌套集合

时间:2009-04-06 13:20:12

标签: c# .net linq collections linq-to-xml

我有一个问题类,其公共列表属性可以包含多个答案

我有一个问题库,负责从xml文件中读取问题及其答案。

所以我有一个问题集(List),每个Question对象都有一个Answers集合,我想通过Linq查询这个问题集合的答案(即名称)。我不知道如何正确地做到这一点。

我可以用foreach做这件事,但我想知道自从我学习它以来是否有纯粹的Linq方式。

4 个答案:

答案 0 :(得分:78)

找到答案。

questions.SelectMany(q => q.Answers).Where(a => a.Name == "SomeName")

找到答案的问题。

questions.Where(q => q.Answers.Any(a => a.Name == "SomeName"))

事实上,您将获得答案或问题的集合,您必须使用First()FirstOrDefault()Single()SingleOrDefault(),具体取决于您的需求具体答案或问题。

答案 1 :(得分:36)

from question in Questions
from answer in question.Answers
where answer.Name == something
select question // or select answer

答案 2 :(得分:7)

使用SelectMany和First / FirstOrDefault(如果您需要一个值)

List<Questions> questions = //initialization;
var someAnswer = questions.SelectMany(q=>q.Answers)
                          .First(a=>a.Name =="MyName");

答案 3 :(得分:7)

似乎你可以使用这样的东西:

var query = from q in questions
            from a in q.Answers
            where a.Name == "Answer Name"
            select a;