2017-11-11 96 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

谢谢这么多:) –

相关问题