建筑层次模型C#
我有一个层次模型:建筑层次模型C#,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个层次模型: public class SearchHierarchyModel : { public string RowID { get; set; } public string Name { get; set; } public string Type { get; set; } public IEnumerable<SearchHierarchyModel> Children { get; set; } } 以下是我的助
public class SearchHierarchyModel :
{
public string RowID { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public IEnumerable<SearchHierarchyModel> Children { get; set; }
}
以下是我的助手对象:
var Building = new SearchHierarchyModel();
var Ground = new SearchHierarchyModel();
var TopNode = new SearchHierarchyModel();
var GroundList = new List<SearchHierarchyModel>();
var Building=newsearchhierarchymodel();
var Ground=新的SearchHierarchyModel();
var TopNode=新的SearchHierarchyModel();
var GroundList=新列表();
这是假设填充层次结构的循环:
foreach (var gr in ground)
{
var BuildingList = new List<SearchHierarchyModel>();
foreach (var by in building)
{
BuildingList.Add(new SearchHierarchyModel
{
Name = by.building,
Type = "BUI",
RowID = by.Id.ToString()
});
foreach (var fl in floors)
{
if (by.Id == fl.Bygning_Bygning_id)
{
var FloorList = new List<SearchHierarchyModel>();
FloorList.Add(new SearchHierarchyModel
{
Name = fl.floor,
Type = "FLR",
RowID = fl.Id.ToString()
});
Building.Children = FloorList;
}
}
Ground.Children = BuildingList;
}
TopNode.Children = GroundList;
}
return TopNode.Children.ToList();
}
foreach(地面中的var gr)
{
var BuildingList=新列表();
foreach(建筑物内的var)
{
BuildingList.Add(新的SearchHierarchyModel
{
名称=按建筑,
Type=“BUI”,
RowID=by.Id.ToString()
});
foreach(楼层中的可变层)
{
if(by.Id==fl.Bygning\u Bygning\u Id)
{
var FloorList=新列表();
FloorList.Add(新的SearchHierarchyModel
{
名称=楼层,
Type=“FLR”,
RowID=fl.Id.ToString()
});
建筑。儿童=楼层列表;
}
}
Ground.Children=BuildingList;
}
TopNode.Children=GroundList;
}
返回TopNode.Children.ToList();
}
但这个层次结构的错误在于顶层(地面)应该有两个子层(两栋建筑),现在它是空的,而这一层应该有两个子层(楼层)。知道循环有什么问题吗?您正在将对象的新实例添加到临时列表中,然后将这些列表设置为唯一实例建筑Ground e.t.c的子对象 你的循环中有一个巨大的指针混乱 如果我没有误解,以下是您应该执行的代码:
var TopNode = new SearchHierarchyModel();
var groundList = new List<SearchHierarchyModel>();
foreach (var gr in ground)
{
SearchHierarchyModel newGround = new SearchHierarchyModel()
{
Name = gr.ground,
Type = "GRD",
RowID = gr.Id.ToString()
};
groundList.Add(newGround);
var buildingList = new List<SearchHierarchyModel>();
foreach (var by in building)
{
SearchHierarchyModel newBuilding = new SearchHierarchyModel()
{
Name = by.building,
Type = "BUI",
RowID = by.Id.ToString()
};
buildingList.Add(newBuilding);
foreach (var fl in floors)
{
if (by.Id == fl.Bygning_Bygning_id)
{
var floorList = new List<SearchHierarchyModel>();
floorList.Add(new SearchHierarchyModel
{
Name = fl.floor,
Type = "FLR",
RowID = fl.Id.ToString()
});
newBuilding.Children = floorList;
}
}
newGround.Children = buildingList;
}
TopNode.Children = groundList;
}
var TopNode=newsearchHierarchyModel();
var groundList=新列表();
foreach(地面中的var gr)
{
SearchHierarchyModel newGround=新的SearchHierarchyModel()
{
名称=gr.ground,
Type=“GRD”,
RowID=gr.Id.ToString()
};
地面列表。添加(新地面);
var buildingList=新列表();
foreach(建筑物内的var)
{
SearchHierarchyModel新建=新建SearchHierarchyModel()
{
名称=按建筑,
Type=“BUI”,
RowID=by.Id.ToString()
};
buildingList.Add(新建);
foreach(楼层中的可变层)
{
if(by.Id==fl.Bygning\u Bygning\u Id)
{
var floorList=新列表();
floorList.Add(新的SearchHierarchyModel
{
名称=楼层,
Type=“FLR”,
RowID=fl.Id.ToString()
});
新建。儿童=楼层列表;
}
}
newGround.Children=buildingList;
}
TopNode.Children=groundList;
}
var TopNode = new SearchHierarchyModel();
var groundList = new List<SearchHierarchyModel>();
foreach (var gr in ground)
{
SearchHierarchyModel newGround = new SearchHierarchyModel()
{
Name = gr.ground,
Type = "GRD",
RowID = gr.Id.ToString()
};
groundList.Add(newGround);
var buildingList = new List<SearchHierarchyModel>();
foreach (var by in building)
{
SearchHierarchyModel newBuilding = new SearchHierarchyModel()
{
Name = by.building,
Type = "BUI",
RowID = by.Id.ToString()
};
buildingList.Add(newBuilding);
foreach (var fl in floors)
{
if (by.Id == fl.Bygning_Bygning_id)
{
var floorList = new List<SearchHierarchyModel>();
floorList.Add(new SearchHierarchyModel
{
Name = fl.floor,
Type = "FLR",
RowID = fl.Id.ToString()
});
newBuilding.Children = floorList;
}
}
newGround.Children = buildingList;
}
TopNode.Children = groundList;
}