2015-11-18 2 views
0

Я иерархии модели:здания модель иерархии C#

public class SearchHierarchyModel : 
    { 
    public string RowID { get; set; } 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public IEnumerable<SearchHierarchyModel> Children { get; set; } 
    } 

, которые предполагают, чтобы быть заполнены от юридических лиц:

ground // entity list of grounds 
building // entity list of buildings based on grounds ids 
floors // entity list of floors based on building ids 

Эти мои вспомогательные объекты:

var Building = new SearchHierarchyModel(); 
var Ground = new SearchHierarchyModel(); 
var TopNode = new SearchHierarchyModel(); 
var GroundList = new List<SearchHierarchyModel>(); 

И это представляют собой петли, которые предполагают заполнять иерархию:

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(); 
     } 

Но, что не так, эта иерархия состоит в том, что верхний уровень (земля) должен иметь два ребенка (два здания), и он пуст, установленный сейчас, и это одно из этих зданий должно иметь два ребенка (пол). Любые идеи, что не так с этими циклами?

ответ

0

Вы добавляете новые экземпляры ваших объектов во временные списки, а затем устанавливаете эти списки как дочерние только экземпляры Building, 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; 
} 
Смежные вопросы