【问题标题】:How to copy values from one SQL Server table to equally named columns in another using LINQ如何使用 LINQ 将一个 SQL Server 表中的值复制到另一个同名列中
【发布时间】:2012-01-17 16:20:19
【问题描述】:

有时在 SQL Server 中,我们有一个包含很多列的临时导入表(“Import”)和另一个包含很多列的表(“Production”),并且许多列具有相同的名称(但不是全部),我们只需要将同名列的值从一个写入另一个(不处理它们)。同一个数据库,两个表中同名的列具有相同的类型。

通常我们这样做:

// 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];

(与使用带有索引的 DataTables 可以做的非常相似,但我们不希望在这里。)

【问题讨论】:

    标签: .net sql-server linq-to-sql


    【解决方案1】:

    您可以尝试使用反射从一个对象复制到另一个对象,如本博客所述:http://goneale.com/2009/02/16/cloning-object-properties-via-reflection/

    如果你有很多不同类型的表需要复制,你可以添加泛型,这样你只需要创建一个“复制”函数。

    【讨论】:

    • +1 以获得完美的答案和很好的引导链接。属性克隆是处理此类问题的最佳方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多