代码之家  ›  专栏  ›  技术社区  ›  kitsune

linq问题:查询嵌套集合

  •  45
  • kitsune  · 技术社区  · 16 年前

    我有一个 问题 类,该类具有可包含多个 答案

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

    因此,我有一个问题集合(列表),每个问题对象都有一个答案集合,我想使用Linq查询这个问题集合以获得答案(即通过其名称)。我不知道该怎么做。

    我可以用foreach来做,但我想知道,既然我在学习,是否有一种纯粹的Linq方法。

    4 回复  |  直到 16 年前
        1
  •  91
  •   JohnB    7 年前

    寻找答案。

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

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

    事实上,你会得到答案或问题的集合,你必须使用 First() , FirstOrDefault() , Single() SingleOrDefault() 根据您的需要,获得一个特定的答案或问题。

        2
  •  40
  •   ybo    16 年前
    from question in Questions
    from answer in question.Answers
    where answer.Name == something
    select question // or select answer
    
        3
  •  7
  •   Mike_G    16 年前

    List<Questions> questions = //initialization;
    var someAnswer = questions.SelectMany(q=>q.Answers)
                              .First(a=>a.Name =="MyName");
    
        4
  •  7
  •   bruno conde    16 年前

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