C#如何把两个datatable1与datatable2中不同的数据取出来,他们都有唯一标示符ID
比如说datatable1datatable2IDnameIDname11号11号22号22号33号怎么把3,3号这个数据取出来存到新的datatable中...
比如说
datatable1 datatable2
ID name ID name
1 1号 1 1号
2 2号 2 2号
3 3号
怎么把3,3号这个数据取出来存到新的datatable中 展开
datatable1 datatable2
ID name ID name
1 1号 1 1号
2 2号 2 2号
3 3号
怎么把3,3号这个数据取出来存到新的datatable中 展开
2个回答
展开全部
static void Main(string[] args)
{
DataTable datatable1, datatable2;
var row1 = datatable1.Rows.Cast<DataRow>();
var row2 = datatable2.Rows.Cast<DataRow>();
var except1 = row1.Except(row2, new DataRowEqualityComparer());//1在2中不存在的
var except2 = row2.Except(row1, new DataRowEqualityComparer());//2在1中不存在
var except = except1.Union(except2).ToArray();//拼起来
}
class DataRowEqualityComparer : IEqualityComparer<DataRow>//只比较主键
{
public bool Equals(DataRow x, DataRow y)
{
return x["ID"].Equals(x["ID"]);
}
public int GetHashCode(DataRow obj)
{
return obj["ID"].GetHashCode();
}
}
展开全部
你是不是应该只把3号数据取出来保存?
更多追问追答
追问
对啊,我这个是打比方。需要先datatable1跟datatable2比较 然后拿出不同的
追答
你这个有没有主表的概念?
例如你举出的例子,如果你把table1作为主表,那么和table2比对之后,就会有没有任何数据。
如果你以table2作为主表,与table1进行比对,才会有Id=3,那条数据。
有主表,匹配规则好写一些,没有主表,那么就要用2层循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询