使用LINQ将相同类的两个对象的所有相应属性从sourceobject复制到targetobject

时间:2017-05-02 13:30:02

标签: c# linq

如果我有两个相同类的对象obj1和obj2,如何使用linq将obj1的所有属性复制到obj2的相应属性?

我尝试了以下内容并且有效,但我很想知道如何通过linq。

Class1 TargetInstance=new Class1();
Class1 SourceInstance=GetObjectFromSomeWhere();
PropertyInfo[] objAllProps = SourceInstance.GetType().GetProperties();

foreach (var prop in objAllProps)
 {
     TargetInstance.GetType().GetProperty(prop.Name)
     .SetValue(TargetInstance,prop.GetValue(SourceInstance, null), null);
 }

1 个答案:

答案 0 :(得分:0)

通过LinQ无法做到这一点。 Linq是 L anguage- In tegrated- Q uery的首字母缩写词。不是数据操作。只是查询。

有很多方法可以做到这一点。您可以序列化/反序列化您的对象。或者使用反射和循环。或者像AutoMapper这样的现成包。

但是单独使用或者除了将其用于外部循环之外的任何其他目的使用它都无法做到这一点。