.net 如何使用LINQ将值从一个SQL Server表复制到另一个SQL Server表中同名的列

.net 如何使用LINQ将值从一个SQL Server表复制到另一个SQL Server表中同名的列,.net,sql-server,linq-to-sql,.net,Sql Server,Linq To Sql,有时,在SQL Server中,我们有一个临时导入表(“导入”),其中包含许多列,另一个表(“生产”)中也包含许多列,许多列具有相同的名称(但并非全部),而我们只需将同名列的值从一个列写入另一个列同一数据库中,两个表中名称相同的列具有相同的类型 通常我们是这样做的: // Lots and lots of columns copied without processing Production.ColumnA = Import.ColumnA; Production.ColumnB = Imp

有时,在SQL Server中,我们有一个临时导入表(“导入”),其中包含许多列,另一个表(“生产”)中也包含许多列,许多列具有相同的名称(但并非全部),而我们只需将同名列的值从一个列写入另一个列同一数据库中,两个表中名称相同的列具有相同的类型

通常我们是这样做的:

// Lots and lots of columns copied without processing
Production.ColumnA = Import.ColumnA; 
Production.ColumnB = Import.ColumnB;
Production.ColumnC = Import.ColumnC;
// [...]

// Some with processing
Production.ColumnQ1 = DoSomething(Import.ColumnQ2); 
如果有很多列,这很烦人,而且有点多余。自动复制这些同名列的最佳方法是什么,如下面的伪代码

foreach(var importRow in ImportRows)
    foreach(Column col in Production.Columns)
        if(Import.Columns.Contains(col.Name)) newProductionRow[col] = importRow[col];

(非常类似于使用带索引的数据表所能做的,但我们这里不希望这样。)

您可以尝试使用反射从一个对象复制到另一个对象,如本博客所述:


如果您有许多不同类型的表需要复制,您可以在混合中添加泛型,因此您只需要创建一个“复制”函数。

+1提供了完美的答案和引导链接。属性克隆是处理此类问题的最佳方法