文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发.Net 专栏 → 如何对比两个DataTable是否相同的正确方法

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

时间:2010/2/3 11:08:00来源:本站整理作者:我要评论(0)

如何对比两个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
写在这里是告诉广大菜鸟(包括我在内),网上流传最多的不一定是正确的,也想对广大老鸟说一下,转载的时候请验证一下内容的正确性,我想这样不管是对自己,对别人都是有好处的吧。
第一次发,如果说的不对的,希望大家不要建议
也希望可以高手给出正确的、高效的,比较两个DataTable是否相等的方法
我是用的比较老土的方法
代码 
public bool DataTableTheSame(DataTable Table1, DataTable Table2)
        {
            if (Table1 == null || Table2 == null)
            {
                return false;
            }
            if (Table1.Rows.Count != Table2.Rows.Count)
            {
                return false;
            }
            if (Table1.Columns.Count != Table2.Columns.Count)
            {
                return false;
            }
            for (int i = 0; i < Table1.Rows.Count; i++)
            {
                for (int j = 0; j < Table1.Columns.Count; j++)
                {
                    if (Table1.Rows[i][j].ToString() != Table2.Rows[i][j].ToString())
                    {
                        return false;
                    }
                }
            }
            return true;
        }

相关视频

    没有数据

相关阅读 DataTable控件的使用LOL云顶之弈各英雄如何搭配装备 云顶之弈全英雄装备搭配推荐iqoo neo和iqoo哪个好 iqoo neo和iqoo对比一览小米cc9和cc9e有什么区别 小米cc9和cc9e对比一览lol凯特琳电玩皮肤对比 lol凯特琳电玩皮肤普通版与至臻版对比amd 5700显卡和2060对比 amd 5700xt和2070哪个好1660和1060哪个好 1660和1060性能差别对比瘟疫传说无罪配置要求如何 瘟疫传说无罪配置要求推荐

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 什么是.NET中的TDD?ASP.NET AJAX入门简介 WebMatrix入门教程VC++2008中如何调用GetOpenFileName打开文件PlaySound函数在VC++6.0中如何播放音乐及声请问VC++回调函数怎么用

人气排行 嵌入式实时操作系统VxWorks入门教程ArrayList 与 string、string[] 的转换C#遍历整个文件夹及子目录的文件代码WebMatrix入门教程asp.net判断文件或文件夹是否存在c#判断数据NULL值的方法vc++6.0怎么写Windows简单窗口代码.net解决数据导出excel时的格式问题