我有一个称为组的表。该表的结构为:
GroupID 1-------
GroupName |
ParentID *-------
现在,我想查找特定父母的所有子女和孙子女。
我试过下面的代码。但这仅使我的孩子们达到了第二级:
List<string> groups = new List<string>();
var parent = (from g in db.Groups
where g.GroupID == 1
select g).FirstOrDefault();
var Children = (from x in db.Groups
where x.ParentID == parent.GroupID
select x);
groups.AddRange(Children.Select(x => x.GroupName));
foreach (Group children in Children)
{
var grandChildren = (from x in db.Groups
where x.ParentID == children.GroupID
select x.GroupName);
groups.AddRange(grandChildren);
}
StringBuilder builder = new StringBuilder();
foreach (string str in groups)
{
builder.Append(str.ToString()).AppendLine();
}
MessageBox.Show(builder.ToString());
您可以尝试像这样递归地执行此操作:
IEnumerable<Group> GetAllChildren(Group parent)
{
var result = (from x in db.Groups
where x.ParentID == parent.GroupID
select x);
foreach (Group child in result)
{
result.AddRange(GetAllChildren(child));
}
return res;
}
这只是一个示例,并不检查循环引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句