在c#中组合数据表和更新

时间:2014-01-08 07:36:00

标签: c# datatable

我在函数中有一个DataTable

public static DataTable FormulaandRowOrder(DataTable dtRoworder)
{
    DataTable table1 = new DataTable();
    // code here

    return table1;  
}

tables1包含Col1Col2等列。

在调用ex函数后,我的函数名是DataFeed

public static DataTable[] DataFeed (DataTable table2, DataTable table3)
{
    //code here

    return new DataTable[] { table2, table3 };
}

上述函数进行了一些编码,并在table3中有一些值。并且table3Col1Col2

具有相同的列

现在,我想使用table1值更新table3。我怎样才能做到这一点? table1table3具有相同的结构,但table3包含一些新值,必须将其添加到table1

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是从表3中读取所有新行并将其复制到table1中。您可以通过LINQ或简单的循环来完成此任务。

答案 1 :(得分:0)

如果table3包含table1中的所有行并且还包含一些新行,那么只需使用
table1.clear();
table1.Merge(table3)

否则使用Linq从table3获取所有新行并将其添加到table1中 C#代码是......

var rowNotIntable1 = table3.AsEnumerable().Select(r => r.Field<string>("col1"))
                                              .Except(table1.AsEnumerable().Select(r =>r.Field<string>("col1")));

                                if (rowNotIntable1 .Count() > 0)
                                {
                                    DataTable dt = (from row in table3.AsEnumerable()
                                                    join id in rowNotIntable1 
                                                        on row.Field<string>("col1") equals id
                                                    select row).CopyToDataTable();
            }
    foreach (DataRow row in dt.Rows)
                                    {
            table1.ImportRow(row);
            table1.AcceptChanges();

        }