发布网友
共3个回答
热心网友
DataTable dt3 = new DataTable();//创建一个空table复制dt1的结构
foreach (DataColumn item in dt1.Columns)
{
dt3.Columns.Add(item.ColumnName, item.DataType);
}
foreach (DataRow dr1 in dt1.Rows)//以dt1为目标对比dt2,找出dt1中在dt2中没有的值
{
int count = 0;//计算是否重复
foreach (DataRow dr2 in dt2.Rows)
{
if (dr1[0] == dr2[0] && dr1[1] == dr2[1] && dr1[2] == dr2[2])//列值全等
{count++;}
}
if (count == 0)//没找到,添加到dt3
{dt3.Rows.Add(dr1[0], dr1[1], dr1[2]);}
}
foreach (DataRow dr2 in dt2.Rows)//以dt2为目标对比dt1,找出dt2中在dt1中没有的值
{
int count = 0;
foreach (DataRow dr1 in dt1.Rows)
{
if (dr1[0] == dr2[0] && dr1[1] == dr2[1] && dr1[2] == dr2[2])
{count++;}
}
if (count == 0)
{dt3.Rows.Add(dr2[0], dr2[1], dr2[2]);}
}
foreach (DataRow item in dt3.Rows)//输出
{
Console.WriteLine(item[0].ToString() + "\t" + item[1].ToString() + "\t" + item[2].ToString() + "\n");
}
这样找出来的是1、2两个表中都不同的数据(即最后显示出来的是你示例1和2中的前两条记录,共4条记录),不知道是不是符合你的要求
热心网友
// dt1为表1
// dt2为表2
// dt3为表3
//不同值以竖线分割
foreach(int i=0;i<3;i++)
{
foreach(int j=0;j<3;j++)
{
string str1=dt1.rows[i][j].toString();
string str2=dt2.rows[i][j].toString();
dt3.rows[i][j]= str1==str2?string.empty:str1+”|”+str2;
}
}
//代码没经过调试,大小你要注意下,最后dt3的值就是表三(不同的数据会以”|”分割显示在其中),
热心网友
111111111111