我有两个DataTable,A并且B是从CSV文件生成的.我需要能够检查哪些行B不存在A.
有没有办法进行某种查询来显示不同的行,还是我必须遍历每个DataTable上的每一行来检查它们是否相同?如果表格变大,后一种选择似乎非常密集.
我正在编写一个简短的算法,它必须比较两个DataSet,以便可以进一步处理两者之间的差异.我尝试通过合并这两个DataSet来完成这个目标,并将结果更改到新的DataSet中.
我的方法如下所示:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Run Code Online (Sandbox Code Playgroud)
foundChanges的结果始终为false,即使两个DataSet中的值不同.两个DataSet都具有相同的结构.它们由三个DataTable组成,这三个DataTable是数据库中三个查询的结果.合并工作没有问题.
我的问题是:有没有合理的解释为什么foundChanges变量总是假的,如果没有,Linq会为这个问题提供一个合适的解决方案,或者我必须通过迭代DataSet来确定更改
以下是一些进一步的信息:编程语言是C#我正在使用.Net framework 4.0我在Windows 8机器上开发所提到的数据来自数据库(MSSQL Server 2012 express)我的DataSet或DataTables没有任何PK的我所知道的.
提前致谢