比较两个DataTable是否相等(网上流传的通病)

我写这篇文章只是想告诉大家,网上流传最广的并不一定是正确的.

我想要是Google搜一下,如何判断两个DataTable相等,出来的最多的是下面的方法.

代码

private bool  ValueEquals(DataTable objA,DataTable objB)
     {
         if(objA != null && objB != null)
         {
               if(objA.Rows.Count != objB.Rows.Count)
               {
                   return false;
               }
               if(objA.Columns.Count != objB.Columns.Count)
               {
                   return false;
               }
         }

         DataView dv = new DataView(objB);
         string keys = "";
         foreach(DataColumn col in  objA.Columns)
         {
                keys += ","+col.ColumnName;
         }

         dv.Sort = keys.Substring(1);

         foreach(DataRow row in  objA.Rows)
         {
                if(row.RowState != DataRowState.Deleted)
                {
                    if(dv.Find(row.ItemArray)<0)
                    {
                           return false;
                    }
                }
                else
                {
                    return false;
                }
         }
         return true;
     }

这个段代码的始作俑者已经无法考证了,但是却流传很多。

我不知道转载的人有没有去验证一下这个方法的正确性,还是只是转载.

这个方法其实是错的。

如果两个DataTable的行数一样,列数一样,但是第一行相同,第二行不相同,用上面的方法比较,返回的依然是True

写在这里是告诉广大菜鸟(包括我在内),网上流传最多的不一定是正确的,也想对广大老鸟说一下,转载的时候请验证一下内容的正确性,我想这样不管是对自己,对别人都是有好处的吧。

第一次发,如果说的不对的,希望大家不要建议.

时间: 2024-08-03 16:07:56

比较两个DataTable是否相等(网上流传的通病)的相关文章

一款名为“iCade”的iPad配件在网上流传

故事从一个玩笑说起.今年4月1日,iPad正式面市销售前两天,一款名为"iCade"的iPad配件在网上流传,号称借助其开发的软件和硬件设计可以令iPad复古为一台小型街机,售价仅为149.9美元,精美的图片和翔实的介绍令其大受苹果粉丝的追捧,被称为"最牛iPad配件".虽然发布这一产品的网站证实这只是一个愚人节玩笑,不过时至今日,众多国内媒体还是屡屡将其捧为iPad必备配件之一,导致众多网友疑问:到底哪儿能买到呢?这显示了iPad所蕴藏的力量,iPad迅速化身为I

网上流传《岳母歌》唱出准女婿心思

楚天都市报讯 据<扬子晚报>报道女婿讨好丈母娘是必须的,近日,网上流传的一首<岳母歌>就唱出了广大准女婿的心思. 套用<套马杆>音乐 这首歌采用流行歌曲<套马杆>的音乐节奏,歌词诙谐幽默.既体现出了丈母娘在婚姻中的重要作用,同时又不露声色地讨好了丈母娘. 歌词中"给我一个蜜月,飞往伦敦的广场,随便喂喂鸽子,转机去香港,这样才叫生活"的句子,借用了"生活体"尽显网络热点元素:"家境学识和人品,还有车和房,您的标

很多网上流传的SEO的文章,都强调高质量外链的重要性

很多网上流传的SEO的文章,都强调高质量外链的重要性,大篇幅的写什么是高质量的外链,新手SEO不要去做垃圾外链等等,空城就想问一个问题:都知道高质量的外链好,但是怎么做? 相信这也是很多朋友都在纠结的一个问题.其实空城认为判断一条外链是否为高质量,可以从两点来看:一是是否对网站的权重增加有帮助,二是是否能为网站带来流量甚至最终形成转化.能满足以上任意一点,都可以称之为高质量外链,空城今天想谈下自己是怎么做外链的. 一.门户投稿 一般行业门户站点的权重都是比较高的,所以很多人都把门户投稿视作做高质

C#中连接两个DataTable,相当于Sql的InnerJoin

    在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.using System;using System.Data; namespace WindowsApplication1{    public class SQLOps    {

在C#中把两个DataTable连接起来

作者:浪漫十一狼在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.using System;using System.Data; namespace WindowsApplication1{    public class SQLOps 

在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法

在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.using System;using System.Data; namespace WindowsApplication1{    public class SQLOps    {    

C#中把两个DataTable连接起来,相当于Sql的Inner Join方法

在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.  如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.  using System;  using System.Data;  namespace WindowsApplication1  {      public class SQLO

比较两个DataTable内容是否相等,先是比数量,数量相等就比内容

#region 比较两个DataTable内容是否相等,先是比数量,数量相等就比内容 /// <summary> /// 比较两个DataTable内容是否相等,先是比数量,数量相等就比内容 /// </summary> /// <param name= "dtA "> </param> /// <param name= "dtB "> </param> public static bool C

求两个DataTable的差集

问题描述 哪位大侠有比较好的方法可以很快的求出两个DataTable的差集啊. 解决方案 解决方案二:循环操作记录求取.解决方案三:不是很明白你说的意思能再说具体点吗?解决方案四:循环记录的方式效率太低了,如果两个表每个表都有上万的数据呢,你计算一下这个计算量是多大呀.我的意思是说有A,B两张表,假设:A表里有1,2,3,4,5这5条数据,B表里有1,2,4这三条数据,我们可以用什么方法最快的把3,5这两条数据取出来.解决方案五:这个要设一个主键,如id,确保唯一,然后用notin做筛选现在假设