我有两个数据表Table1
和Table2
。我想比较一个值SourceField
并将两个表的行插入一个新的数据表。
表#1 - 映射表
Key SourceField
------------------
null name
A101 V1
A102 V2
A103 V3
表#2 - 源表
Name V1 V2 V3
-----------------------
10001 1 2 3
表#3 - 输出表
Name Value Key
--------------------
10001 1 A101
10001 2 A102
10001 3 A103
此致 和Manish
答案 0 :(得分:1)
对于DataTable
,以下解决方案适合您。
我测试了它。我使用了你在问题中提到的相同结构。
DataTable table1 = new DataTable();
table1.Columns.Add("Key");
table1.Columns.Add("SourceField");
table1.Rows.Add("A101", "V1");
table1.Rows.Add("A102", "V2");
table1.Rows.Add("A103", "V3");
DataTable table2 = new DataTable();
table2.Columns.Add("Name");
table2.Columns.Add("V1");
table2.Columns.Add("V2");
table2.Columns.Add("V3");
table2.Rows.Add("10001", 1, 2, 3);
DataTable table3 = new DataTable();
table3.Columns.Add("Name");
table3.Columns.Add("Value");
table3.Columns.Add("Key");
// LOOP FOR COMPARING THE DIFFERENT COLUMNS AND VALUES FROM DIFFERENT DATATABLES
foreach (DataRow drtable1 in table1.Rows)
{
foreach (DataRow drtable2 in table2.Rows)
{
if ( drtable2[Convert.ToString(drtable1["SourceField"])] != null)
{
table3.Rows.Add(drtable2["Name"], drtable2[Convert.ToString(drtable1["SourceField"])], drtable1["Key"]);
}
}
}
结果(从Visual Studio中快照)
<强>更新强>
需要在循环中添加一个条件以检查Key
列的空白值。
// LOOP FOR COMPARING THE DIFFERENT COLUMNS AND VALUES FROM DIFFERENT DATATABLES
foreach (DataRow drtable1 in table1.Rows)
{
foreach (DataRow drtable2 in table2.Rows)
{
if (drtable2[Convert.ToString(drtable1["SourceField"])] != null && Convert.ToString(drtable1["Key"]).Trim() != string.Empty)
{
table3.Rows.Add(drtable2["Name"], drtable2[Convert.ToString(drtable1["SourceField"])], drtable1["Key"]);
}
}
}
答案 1 :(得分:0)
您可以创建新的DataSet
:
DataSet dset = new DataSet();
DataTable datatable3 = new DataTable("OutputTable");
datatable3.Columns.Add(new DataColumn("Name",typeof(string)));
datatable3.Columns.Add(new DataColumn("Value", typeof(int)));
datatable3.Columns.Add(new DataColumn("Key", typeof(string)));
//do a foreach or any other operation here
//you can add a new row to the datatable like that:
drow["Name"] = "10001";
drow["Value"] = 3;
drow["Key"] = "A103";
DataRow drow = datatable3.NewRow();
datatable3.Rows.Add(drow);
//after adding ALL rows, you have to add the datatable to the dataset
dset.Tables.Add(datatable3);
循环遍历现有数据集(我猜你已经将ds1和ds2作为单独的数据表):
foreach (DataRow row1 in datatable1.Rows)
{
foreach (DataRow row2 in datatable2.Rows)
{
//example comparasion
if (row1["SourceField"] == row2["SourceField")
{
datatable3.Rows.Add(....) //see above examples how to add a row
}
}
}