繁体   English   中英

如何在Linq C#中将一个对象分配给另一个对象而不创建新对象

[英]How to assign one object to another in Linq c# without making new

我在将Linq中的一个对象分配给另一个对象时遇到了问题。 在此示例中:

Func<result, result> make = q => new result
{
    Id = q.Id,
    lName = q.lName,
    GroupId = q.GroupId,
    Age = (from tags in q.age where tags.Del == null && tags.lId == q.Id select age).ToEntitySet(),

};

p = (from q in dc.results
        where q.Id == Id.Value
        select make(q)).First();

我正在制作新对象并分配该对象,但是我不想这样做,这会导致插入问题。 我想分配而不创建新对象,这怎么可能?

乔恩·斯凯特(Jon Skeet)和马克·格雷夫(Marc Gravell)拥有一个名为MiscUtil的库。 MiscUtil .Reflection内部,有一个名为PropertyCopy的类,它完全按照您的描述进行操作。 它仅适用于.NET 3.5。

它通过运行SourceType的公共属性来工作,通过名称将它们与TargetType的公共属性进行匹配,确保可以将每个属性从源分配给目标,然后为这两个属性创建并缓存复印机功能类型(因此您不必每次都进行所有反射)。 我已经在生产代码中使用了它,并且可以保证它的优点。

查看此帖子以获取代码示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM