我有这样的类结构:
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查询获取所有规则的列表,还是我必须创建一些递归方法?
答案 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;
}