Welcome

首页 / 软件开发 / .NET编程技术 / 比较两个DataTable是否相等(网上流传的通病)

比较两个DataTable是否相等(网上流传的通病)2011-02-03 博客园 LazySamuel我写这篇文章只是想告诉大家,网上流传最广的并不一定是正确的.

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

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

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