1
我正在使用Linq创建树层次结构,因为我是新手,所以我面临麻烦。我已经从其中我要创建层级两个表和表如下使用Linq构建树层次结构
表A
Id
Name
Description
表B
Id of A (as foreign key)
Name
我需要像结构这个:
name(From table A)
|_name(from table B)
|_name (from table B)
name(from table A)
我有一个类定义为
Public Class C
{
public class C(C item,IEnumerable<C> id,IEnumerable<C> data)
{
AId=item.AI;
BId=item.BId;
AName=item.Name;
Childeren=id;
}
public IEnumerable<C> Children{get;set}
}
所有表的名称必须显示,即使它不具有节点
我曾经集团携手获得无论从表中的数据,现在我有问题代码来选择节点及其子节点。我的linq代码如下:
private List<Model> BuildHierarchy(IEnumerable<Model> Hirs)
{
var families=Hirs.ToLookup(x => x.AId);
var topmost = families.First().Select(s => s);
Func<string, IList<Model>> children = null;
children = (parentId) => families[parentId]
.OrderBy(x => x.BId)
.Select(x => new Model(x, children(x.BId), Hirs))
.OrderBy(o=> o.Bid).ToList();
return topmost.Select(mod => new Model(mod, children(mod.BId), Hirs)).ToList();
}
它所做的只是获取表A的第一个节点,但节点中的所有数据。当我点击节点时,该方法会再次被调用,从而创建相同的节点。
我不知道为什么我有这个问题,如果你们会帮助我,这将是一个很大的帮助,因为我在这里呆了很长一段时间。
谢谢
什么是'Model'?显示你在哪里调用'BuildHierarchy'? – 2013-04-05 07:35:26
模型用于保存来自数据库的数据所在的数据。 BuildHierarchy在模型填充后调用,上面的代码应该创建节点及其子注释 – shunilkarki 2013-04-05 09:22:19
这是一个向您的帖子中添加代码的调用。目前还不清楚你如何调用'BuildHierarchy'和输出的位置。另外,代码中的类“A”和“B”在哪里? – 2013-04-05 10:05:36