如何在LINQ中将对象的所有属性复制到另一个属性

Yog*_*hak 4 c# linq asp.net-mvc-4

我有一个STUDENT表对象,其中我有新值,我想用这些新值更新STUDENT表.我的代码是下面给出的(它用于将属性从STD复制到getdata但是)它没有更新数据库中STUDENT表中的值为什么?先感谢您.

public void UpdateStudent(STUDENT STD)
    {
        context = new ERPDataContext();
        var getdata = context.STUDENTs.SingleOrDefault(obj=>obj.ID==STD.ID);
        getdata = STD;
        context.SubmitChanges();
    }
Run Code Online (Sandbox Code Playgroud)

sam*_*mar 7

你可以在这里使用反射.不确定它是否能彻底解决您的问题.使用反射也可能是一种过度杀伤,所以请检查性能.

我使用了一个虚拟类"A"来解释如何使用它.看看它,让我知道它是否有效.

    public class A 
    {
        public string aField { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

代码是:

        A obj1 = new A();
        A obj2 = new A();

        obj1.aField = "aaa";

        var propInfo = obj1.GetType().GetProperties();
        foreach (var item in propInfo)
        {
            obj2.GetType().GetProperty(item.Name).SetValue(obj2, item.GetValue(obj1, null), null);
        }
Run Code Online (Sandbox Code Playgroud)

当然,您需要添加命名空间:

using System.Reflection;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.