2017-11-11 95 views
0

這是由Ado.net模型自動生成我的實體模型類我嘗試的實體模型類的數據添加到我的另一份名單,但之後的foreach相同的行插入每一行中,MVC

public partial class SubModule 
    { 
     public int SubModuleId { get; set; } 
     public Nullable<int> ModuleId { get; set; } 
     public string SubModuleName { get; set; } 
     public Nullable<bool> Active { get; set; } 
     public Nullable<bool> IsModules { get; set; } 
     public string url { get; set; } 
     public string path { get; set; } 
     public string subform { get; set; } 
    } 


this is my another class 

public class ChildModules 
    { 
     public int ? SubModuleId { get; set; } 
     public Nullable<int> ModuleId { get; set; } 
     public string SubModuleName { get; set; } 
     public Nullable<bool> Active { get; set; } 
     public Nullable<bool> IsModules { get; set; } 
     public string url { get; set; } 
     public string path { get; set; } 
     public string subform { get; set; } 

    } 

我想子模塊的數據複製到我的子模塊類屬性

我的代碼是

List<SubModule> ChildModule = entity.SubModules.Where(x => x.IsModules == false).ToList(); 
      List<ChildModules> listchildmodules = new List<ChildModules>(); 
      ChildModules chmodule = new ChildModules(); 

      foreach (SubModule mod in ChildModule) 
      { 
       chmodule.SubModuleId = mod.SubModuleId; 
       chmodule.ModuleId = mod.ModuleId; 
       chmodule.SubModuleName = mod.SubModuleName; 
       chmodule.Active = mod.Active; 
       chmodule.IsModules = mod.IsModules; 
       chmodule.url = mod.url; 
       chmodule.path = mod.path; 
       chmodule.subform = mod.subform; 

       listchildmodules.Add(chmodule); 
      } 

但在listchildmodules中的最後一行插入到每個索引中。

爲什麼?

回答

1

你的代碼總是總是添加相同的對象。因爲您始終更新同一對象的值並將其插入列表中。

將下面的代碼行保存在foreach中。

ChildModules chmodule = new ChildModules();

你的foreach應該如下

 foreach (SubModule mod in ChildModule) 
     { 
      ChildModules chmodule = new ChildModules(); 
      chmodule.SubModuleId = mod.SubModuleId; 
      chmodule.ModuleId = mod.ModuleId; 
      chmodule.SubModuleName = mod.SubModuleName; 
      chmodule.Active = mod.Active; 
      chmodule.IsModules = mod.IsModules; 
      chmodule.url = mod.url; 
      chmodule.path = mod.path; 
      chmodule.subform = mod.subform; 

      listchildmodules.Add(chmodule); 
     } 

或者你可以聲明ChildModules chmodule; outside foreach並初始化chmodule = new ChildModules();在foreach循環中使用

+0

謝謝這麼多:) –

相關問題