如何将列添加到另一个数据表的数据表中

时间:2016-05-24 18:41:17

标签: c# asp.net datatable

我有两个数据表dt1和dt2,两者共享一个公共列。如何映射公共列并将包含数据的新列添加到数据表dt1。

ID     COL    VALUE
1       A     10
2       B     10
3       C     10
4       D     10
5       E     10

同样对于dt2,select语句是“select col1,somecol from sometable”rest与dt1相同。

对于dt1,输出为:和dt2的输出

ID     COL    VALUE
1       A     10
2       B     20
3       C     30
4       D     40
5       E     50

我尝试如下:

DataTable dt1=new DataTable();
DataTable dt2=new DataTable();

sqlDataAdapter da1=new sqlDataAdapter("select col1,col2,col3,col4 from table",connection);
dataset ds1=new dataset();
da1.fill(ds);
dt1=ds.tables[0];

我希望得到如下的输出:

col1   col2  col3 col4             col1  somecol
1        2     3   4                1     true
2        5     6   ...              2     false..

在选择数据本身时,我无法编写简单的连接,因为dt2数据来自更复杂的计算。所以我只能在数据级别这样做。

如果dt1中的行数与dt2中的行数不匹配,则dt2应添加新行,默认值为false。

1 个答案:

答案 0 :(得分:0)

您可以使用DataTable.Merge方法。命令dt1.Merge(dt2)dt1的其他列和其他数据记录添加到dt2。来自dt2的数据将覆盖共享相同主键值和相同列名的dt1数据。

DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();

// Fill the data tables
...

// Set the default value for boolean column
dt2.Columns[4].DefaultValue = false;

// Set the primary keys
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0] }; // Use the appropriate column index
dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0] }; // Use the appropriate column index

// Merge the two data tables in dt1
dt1.Merge(dt2);