如何解决比较两个数据表并得到差异
我有两个数据表,我想根据不同的列获取这两个数据库之间的差异,并将它们复制到另一个数据表中。
例如
数据表 1
代码 | 姓名 | 年龄 | 钱 |
---|---|---|---|
123 | 用户 1 | 25 | 68000.00 |
456 | 用户 2 | 32 | 23000.00 |
963 | 用户 3 | 56 | 75000.00 |
852 | 用户 4 | 29 | 13000.00 |
数据表 2
代码 | 姓名 | 年龄 | 钱 |
---|---|---|---|
963 | 用户 3 | 56 | 75000.00 |
456 | 用户 2 | 32 | 26000.58 |
123 | 用户 1 | 25 | 59000.63 |
852 | 用户 4 | 29 | 13000.00 |
741 | 用户N | 22 | 15000.56 |
数据表结果
代码 | 姓名 | 年龄 | 钱 |
---|---|---|---|
456 | 用户 2 | 32 | 26000.58 |
123 | 用户 1 | 25 | 59000.63 |
741 | 用户N | 22 | 15000.56 |
我使用了这段代码,但它没有显示正确的结果
dtr = (from r in dt1.AsEnumerable()
where !dt2.AsEnumerable().Any(r2 => r[3].ToString().Trim() == r2[3].ToString().Trim())
select r).CopyToDataTable();
解决方法
您可以使用 Linq 和 Except
来确定:
在示例中,我将行投影到匿名类型,然后执行“except”设置操作以获得结果:
var dtrows = dt1.AsEnumerable().Select(rw => new { Code = rw[0],Name = rw[1],Age = rw[2],Money = rw[3] });
var dt2rows = dt2.AsEnumerable().Select(rw => new { Code = rw[0],Money = rw[3] });
dt2rows.Except(dtrows)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。