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中
展开
 我来答
超大蒲公英
2015-09-17 · TA获得超过741个赞
知道小有建树答主
回答量:758
采纳率:75%
帮助的人:742万
展开全部
        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();
            }
        }
handangaoyang
2015-09-17 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:920万
展开全部
你是不是应该只把3号数据取出来保存?
更多追问追答
追问
对啊,我这个是打比方。需要先datatable1跟datatable2比较 然后拿出不同的
追答
你这个有没有主表的概念?
例如你举出的例子,如果你把table1作为主表,那么和table2比对之后,就会有没有任何数据。
如果你以table2作为主表,与table1进行比对,才会有Id=3,那条数据。

有主表,匹配规则好写一些,没有主表,那么就要用2层循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式