如何为此数据结构编写linq查询

时间:2015-10-29 22:54:33

标签: c# linq

我有这样的类结构:

class Group
{
    public List<Group> SubGroups {get; set;}
    public List<Rule> Rules {get; set; }
}

class Rule
{
}

一个实例可能是这样的:

Group 1
    SubGroup 1
        Rule 1
        Rule 2
    Rule 3
    Rule 5
Group 2
    SubGroup 2
        SubGroup 3
            Rule 7
            Rule 8
    Rule 6

有没有办法使用LINQ查询获取所有规则的列表,还是我必须创建一些递归方法?

1 个答案:

答案 0 :(得分:3)

我认为你不能只使用LINQ(没有递归)。你可以使用帮助器。像这样:

int

或者更多LINQ风格:

public static IEnumerable<Rule> GetRules(Group group) 
{
    foreach (var rule in group.Rules)
        yield return rule;
    if (group.SubGroups != null)
        foreach (var rule in group.SubGroups.SelectMany(g => GetRules(g)))
            yield return rule;
}