2017-04-20 6 views
0

Listのクラスを作成し、コンストラクタがその中の関数を呼び出す必要があるオブジェクトを作成し、すべてのデータベース(H_Table/Table)を再帰的に参照し、すべてのリストを返すその中の階層構造。関数を介してリストクラスオブジェクトを塗りつぶす

どのようにすれば、foreachとif/else文を実行するときに同じ要素を書き直すのではなく、同じ要素を書き直すだけではありませんか?

using System.Collections.Generic; 
    using System.Linq; 
    using System.Web.Mvc; 
    using Tree_List.Models; 
    using System.Data.Entity; 

namespace Tree_List.Controllers 
{ 
    public class ListController : Controller 
    { 
     // GET: List 
     private Models.ListDBEntities1 db_connection = new Models.ListDBEntities1(); 

     public ActionResult Index() 
     { 
      var Hierarchy = db_connection.H_Table; 
      Element Item = new Element(Hierarchy, null); 
      return View(Item); 
     } 


    } 

    public partial class Element 
    { 
     public int ID { get; set; } 
     public string NAME { get; set; } 
     public List<Element> CHILDS { get; set; } 

     public Element(DbSet<H_Table> Table, int? ParentID) 
     { 
      PopulateList(Table, ParentID); 
     } 

     public List<Element> PopulateList (DbSet<H_Table> Table, int? ParentI) 
     { 
      List<Element> temp = new List<Element>(); 
      foreach (var root in Table) 
      { 
       if (root.PARENT_ID == null) 
       { 
        ID = root.ID; 
        NAME = root.NAME; 
        foreach (var child in Table) 
        { 
         if (child.PARENT_ID == ID) 
         { 
          ID = child.ID; 
          NAME = child.NAME; 
         } 
        } 
       } 
      } 
      return temp; 
     } 

    } 
} 

答えて

0

これを使用できますか?すべての要素のリストを返します

List<Element> = db_connection.H_Table.Select(s=>new Element { 
ID = s.ID, 
NAME =s.NAME 
}).ToList(); 
関連する問題