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

时间:2012-10-26 04:57:14

标签: c# sql linq linq-to-sql

我在Linq to SQL中将一个对象分配给另一个对象时遇到了问题。在这个例子中:

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

我正在创建新的并分配对象,但我不想这样做,它会导致插入问题。我想在不创建新对象的情况下进行分配,这怎么可能?

1 个答案:

答案 0 :(得分:1)

Jon Skeet和Marc Gravell有一个名为MiscUtil的图书馆。在MiscUtil内部。反射有一个名为PropertyCopy的类,它完全按照您的描述进行操作。它仅适用于.NET 3.5。

它的工作原理是遍历SourceType的公共属性,通过名称与TargetType的公共属性进行匹配,确保每个属性都可以从源分配到目标,然后创建并缓存复制器功能对于这两种类型(所以你不是每次都做这些反射)。我已经在生产代码中使用它并且可以保证它的优点。

在此帖中查看code example