我尝试将实体模型 class 数据添加到我的另一个列表中,但是在 foreach 之后,在每一行中插入相同的行,MVC

I try to add entity model class data to my another list ,but after foreach Same rows insert in every row , MVC

This is my Entity model class which was auto generated by Ado.net model

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

    }

I want to copy Sub modules data to my Child modules class properties

My code is

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

but in listchildmodules last row insert in every index.

Why?

您的代码始终添加相同的对象。因为您总是更新同一对象的值并将其插入到列表中。

将下面的代码行保留在 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);
        }

或者您可以在 foreach 外声明 ChildModules chmodule; 并在 foreach 循环内初始化 chmodule = new ChildModules();