如何使用LINQ选择两个层次的对象的值?

时间:2018-10-29 16:38:58

标签: c# linq

我有以下课程:

表格

public class Form
    {
        public string id { get; set; }
        public IEnumerable<Section> sections { get; set; }
    }

部分

public class Section
    {
        public int id { get; set; }
        public string name { get; set; }
        public bool validated { get; set; }
        public IEnumerable<Question> questions { get; set; }
    }

问题

public class Question
{
    public int id { get; set; }
    public int required { get; set; }
}

我希望能够搜索表格中每个部分中找到的问题,检查Required是否设置为1或0,然后拉回所需的每个问题。

我真的不确定如何执行此操作。目前,我有这个:

List<Question> requiredQuestions = 
                root.form.sections
                    .Where(x => x.questions.Where(y => y.required == 1))

但是上面的这段代码给出了语法错误。我仍然发现Linq有点混乱,请有人帮忙。

1 个答案:

答案 0 :(得分:1)

您可以使用SelectMany来获取所有问题,然后根据required属性进行过滤:

List<Question> requiredQuestions = root.form.sections
    .SelectMany(section => section.questions)
    .Where(question => question.required == 1)
    .ToList();