linq question: querying nested collections
我有一个问题类,它具有公共列表属性,可以包含多个答案。
我有一个问题库,负责从XML文件中读取问题及其答案。
所以我有一个问题集合(列表),每个问题对象都有一个答案集合,我想通过使用linq来查询这个问题集合的答案(即按名称)。我不知道该怎么做。
我可以用前臂来做,但我想知道,自从我开始学习后,是否有一种纯粹的LINQ方法。
找到答案。
1 | questions.SelectMany(q => q.Answers).Where(a => a.Name =="SomeName") |
找到答案的问题。
1 | questions.Where(q => q.Answers.Any(a => a.Name =="SomeName")) |
事实上,你会得到答案或问题的集合,你必须使用
1 2 3 4 | from question in Questions from answer in question.Answers where answer.Name == something select question // or select answer |
你似乎可以用这样的东西:
1 2 3 4 | var query = from q in questions from a in q.Answers where a.Name =="Answer Name" select a; |
使用selectmany和first/first或默认值(如果需要一个值)
1 2 3 | List<Questions> questions = //initialization; var someAnswer = questions.SelectMany(q=>q.Answers) .First(a=>a.Name =="MyName"); |