http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3957|回复: 4

[总群] [2012-12-26][秋风下的落叶]怎么快速比较dataset两张表的数据是否相同

[复制链接]
发表于 2012-12-26 14:57:57 | 显示全部楼层 |阅读模式
       怎么快速比较dataset两张表的数据是否相同


秋风下的落叶(240452625) 14:08:45

我有一个dataset,里面有两张表的数据,我想快速对比一下这两张表是不是完全一样,请问有没有办法?谢谢
(dataset可以换成两个datatable)

[重庆]Eagle(838010363) 14:23:58

快速的方法我这里还没有时间想
[重庆]Eagle(838010363) 14:24:09

普通方法到是有个
[重庆]Eagle(838010363) 14:24:13

你晓得你需要不
秋风下的落叶(240452625) 14:26:50

什么方法
[重庆]Eagle(838010363) 14:27:38

对比表结构
[重庆]Eagle(838010363) 14:28:01

如果表中有数据,直接对比数据条数
菜鸟小贝.中山(408599029) 14:28:12


[郑州] 站长苏飞<sufei.1013@163.com> 14:28:28

Linq内存对比
最惠技术王小玄(1462249722) 14:29:03

用视图每个字段作为条件也可以
秋风下的落叶(240452625) 14:31:29

对比条数肯定不行的
最惠技术王小玄(1462249722) 14:31:59

用视图吧,快捷方便
秋风下的落叶(240452625) 14:34:51

。。
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:38:08

两个表的结构一样么?
秋风下的落叶(240452625) 14:38:14

一样
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:38:54

那就是要比较数据是否一致了
秋风下的落叶(240452625) 14:38:59

是啊
秋风下的落叶(240452625) 14:39:04

必须是对比数据
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:40:39

先比较行数是否一致
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:41:06

如果不一致 则表示数据不一致
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:41:48

行数一致的话 就逐行比较吧
最惠技术王小玄(1462249722) 14:43:20

SELECT * FROM T_demo d1 INNER JOIN T_demo d2 ON d1.id=d2.id AND d1.NO=d2.NO AND d1.NAMEE=d2.NAMEE
给你个例子

秋风下的落叶(240452625) 14:45:18

我擦
秋风下的落叶(240452625) 14:45:29

就是怎么比也得循环
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:46:59

.net 貌似没有提供DataTable的对比功能。。
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:47:19

所以需要自己来完成
秋风下的落叶(240452625) 14:47:33

悲剧了
[郑州] 站长苏飞<sufei.1013@163.com> 14:48:26

这个对比也很好办吧,刚[洛阳] 季末ˇ说的思路就行,循环是要的
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:50:22

其实就是怎么样操作起来效率会高一点的问题
秋风下的落叶(240452625) 14:50:43

我的想法就是想看看有没有不用循环的方法
[郑州] 站长苏飞<sufei.1013@163.com> 14:52:02

不用循环也得用查找,呵呵
[重庆]Eagle(838010363) 14:52:39

建议用主键
[重庆]Eagle(838010363) 14:52:58

对比主键差异
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com> 14:53:21

不用循环的貌似也有吧  将两个DataTable TO成 XML 然后计算 XML 内容的 MD5
[郑州] 站长苏飞<sufei.1013@163.com> 14:55:09

    还比较什么MD5直接字符串对比就行了
12312.jpg
[郑州] 站长苏飞<sufei.1013@163.com> 14:55:25

to xml string






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2012-12-26 15:00:02 | 显示全部楼层
我提供个循环方法
[code=csharp]   DataSet ds = new DataSet();
        if (ds.Tables[0].Rows.Count != ds.Tables[1].Rows.Count)
        {
            return false;
        }
        else
        {
            if (ds.Tables[0].Rows.Count > ds.Tables[1].Rows.Count)
            {
                for (int n = 0; n < ds.Tables[0].Rows.Count; n++)
                {
                    if (ds.Tables[0].Rows[n].ToString() != ds.Tables[1].Rows[n].ToString())
                    {
                        return false;
                    }
                }
            }
            else
            {
                for (int n = 0; n < ds.Tables[1].Rows.Count; n++)
                {
                    if (ds.Tables[0].Rows[n].ToString() != ds.Tables[1].Rows[n].ToString())
                    {
                        return false;
                    }

                }
            }
        }
        return true;[/code]
 楼主| 发表于 2012-12-26 15:03:52 | 显示全部楼层
[重庆]Eagle(838010363)  14:58:46
建议直接看数据条数是否相同
[code=csharp]select count(1) from Table //这里有个简单的优化节省数据库查询

if(Table1.Count==Table2.Count)
{
//相同
}
else
{

}[/code]
秋风下的落叶(240452625)  15:00:21
哈哈
to xml
对比两个xml是不是可以呢
看条数是不是相同肯定不行的
[郑州] 站长苏飞<sufei.1013@163.com>  15:00:45
对比Xml是个不错的选择,
[重庆]Eagle(838010363)  15:01:17
后面哪个else里面用xml对比撒
我最开始说的那个不耗计算机的内存
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com>  15:02:14
其实我刚才也就那么一说
秋风下的落叶(240452625)  15:02:17
。。。。
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com>  15:02:40
如果真TO成XML再进行比较  效率反而没有 直接循环比较来的快
秋风下的落叶(240452625)  15:03:05
哎,看来都是要循环的了
[郑州] 站长苏飞<sufei.1013@163.com>  15:03:07
TO Xml直接比较流
WriteXml
不是不让用循环吗?
 楼主| 发表于 2012-12-26 15:06:47 | 显示全部楼层
[重庆]Eagle(838010363)  15:04:52
递归
[重庆]Eagle(838010363)  15:05:13
递归是最耗资源的
[郑州] 站长苏飞<sufei.1013@163.com>  15:05:34
如果要是侧重性能的话我感觉还是使用我上面发的方法吧,
FOR还是很快的,
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com>  15:06:09
循环比较的话 可以 先比较一半 然后比较剩下一半的一半 然后在比较剩下一半的一半 知道最后
效率会比较高一点
 楼主| 发表于 2012-12-26 15:07:59 | 显示全部楼层
无法浏览网页(1250623166)  15:07:16
比较xml还是快些
[洛阳] 季末ˇ<gexiaoliang@vip.qq.com>  15:07:47
关键是 转化成 XML 影响效率
[郑州] 站长苏飞<sufei.1013@163.com>  15:07:41
比较xml没有循环性能高
[重庆]Eagle(838010363)  15:07:53
按数据量来
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-30 04:10

© 2014-2021

快速回复 返回顶部 返回列表