考虑下面的类,用于构建一个树层次结构的特定级别:获取所有节点在树上
public class simpletest
{
public simpletest Parent { get; set; }
public IList<simpletest> Children { get; set; }
public string Name { get; set; }
}
我怎么能得到一个特定级别的所有对象的列表?
下面是一些示例数据(希望其正确格式化):
var root = new simpletest() { Name = "Root" };
var level1childA = new simpletest() { Name = "level1childA", Parent = root };
var level1childB = new simpletest() { Name = "level1childB", Parent = root };
var level2childA = new simpletest() { Name = "level2childA", Parent = level1childA };
var level2childB = new simpletest() { Name = "level2childB", Parent = level1childA };
var level2childC = new simpletest() { Name = "level2childC", Parent = level1childB };
var level2childD = new simpletest() { Name = "level3childD", Parent = level1childB };
var level3childA = new simpletest() { Name = "level3childA", Parent = level2childA };
var level3childB = new simpletest() { Name = "level3childB", Parent = level2childA };
var level3childC = new simpletest() { Name = "level3childC", Parent = level2childB };
var level3childD = new simpletest() { Name = "level3childD", Parent = level2childB };
var level3childE = new simpletest() { Name = "level3childE", Parent = level2childC };
var level3childF = new simpletest() { Name = "level3childF", Parent = level2childC };
var level3childG = new simpletest() { Name = "level3childG", Parent = level3childD };
var level3childH = new simpletest() { Name = "level3childH", Parent = level3childD };
level2childA.Children = new List<simpletest> { level3childA, level3childB };
level2childB.Children = new List<simpletest> { level3childC, level3childD };
level2childC.Children = new List<simpletest> { level3childE, level3childF };
level2childD.Children = new List<simpletest> { level3childG, level3childH };
level1childA.Children = new List<simpletest> { level2childA, level2childB };
level1childB.Children = new List<simpletest> { level2childC, level2childD };
因此,例如,使用节点level3childE,我怎么会从同级别的所有节点?节点名称可以是任何东西。
创建方法'Depth',对于每个节点返回其深度到根?然后LINQ用适当的查询选择根节点? – 2012-08-05 13:37:07
你可以创建一个Level/Depth属性,然后根据这个属性查询对象,或者创建一个基本的for循环,它遍历你的树项目到期望的级别,在这一点上它选择这些对象 – timothyclifford 2012-08-05 13:39:44