2017-11-11 1 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); 
      } 

ただし、すべてのインデックスにリストチップモジュールの最終行を挿入します。

なぜですか?

答えて

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を宣言することができ、以下のようになるはずです。 foreach外で初期化するchmodule = new ChildModules(); foreachループ内の

+0

ありがとうございます:) –

関連する問題