WEB开发网
开发学院WEB开发ASP 比较两个DataTable是否相等(网上流传的通病) 阅读

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

 2010-02-01 10:46:36 来源:WEB开发网   
核心提示:我写这篇文章只是想告诉大家,网上流传最广的并不一定是正确的我想要是Google搜一下,比较两个DataTable是否相等(网上流传的通病),如何判断两个DataTable相等,出来的最多的是下面的方法 代码 PRivate boolValueEquals(DataTable objA,DataTable objB){
我写这篇文章只是想告诉大家,网上流传最广的并不一定是正确的

我想要是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;
    }


Tags:比较 两个 DataTable

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接