我有两个数据表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。
答案 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);