我在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();
我正在创建新的并分配对象,但我不想这样做,它会导致插入问题。我想在不创建新对象的情况下进行分配,这怎么可能?
答案 0 :(得分:1)
Jon Skeet和Marc Gravell有一个名为MiscUtil的图书馆。在MiscUtil
内部。反射有一个名为PropertyCopy
的类,它完全按照您的描述进行操作。它仅适用于.NET 3.5。
它的工作原理是遍历SourceType的公共属性,通过名称与TargetType的公共属性进行匹配,确保每个属性都可以从源分配到目标,然后创建并缓存复制器功能对于这两种类型(所以你不是每次都做这些反射)。我已经在生产代码中使用它并且可以保证它的优点。
在此帖中查看code example。