如何对比两列数据是否相同个DataTable是否相同的正确方法

前几天服务端有业务要增加点需求,有一个处理是利用datatable比对出两个不同的用户列表,拿着比对的结果再与另外一个datatable进行比较。
最基本的写法无非是写多层foreach循环,数据量多了,循环的次数是乘积增长的。
这里推荐使用Except()差集、Intersect()交集,具体性能没有进行对比。
如果两个datatable的字段完全一致的话,可以直接使用Except,Intersect
//与免打扰中的用户进行比较,筛选出可以正常接收推送的用户
var normalReceive = dtUser.AsEnumerable().Except(dtDND.AsEnumerable(), DataRowComparer.Default);
//比对两个表的用户名一致的,保存username到list中
var intersectUser = dtUserPower.AsEnumerable().Intersect(normalReceive, DataRowComparer.Default);
foreach (var item in intersectUser)
{& &listTemp.Add(item["username"].ToString());
如果两个datatable中有部分字段相同,也就是说有可进行比对的字段的话。
//与免打扰中的用户进行比较,筛选出可以正常接收推送的用户
var normalReceive = from r in dtUser.AsEnumerable()
!(from rr in dtDND.AsEnumerable() select rr.Field&string&("username")).Contains(
r.Field&string&("username"))
//比对两个表的用户名一致的,保存token到list中
var intersectUser = from r in normalReceive.AsEnumerable()
(from rr in dtUserPower.AsEnumerable() select rr.Field&string&("username")).Contains(
r.Field&string&("username"))
foreach (var item in intersectUser)
listTemp.Add(item["token"].ToString());
阅读(...) 评论()安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
本帖子已过去太久远了,不再提供回复功能。扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
C#中如何用DataTable 获取一个表的集合 在用DataTable获取另一张表的集合 最后两张表对比
扫二维码下载作业帮
2亿+学生的选择
我的思路是,DataTable A,DataTable B,按照一个字段(关键字段),按照同一种方法进行排序,例如 都是desc 吧,这样的话,你只用将A中的关键字段,和B中的第一个关键字段来进行比较,如果A.关键字段
扫描下载二维码

我要回帖

更多关于 2列相同正确的是 的文章

 

随机推荐