C# 比较两个相似但不完全相同的数据表

C# 比较两个相似但不完全相同的数据表,c#,datatable,comparison,C#,Datatable,Comparison,我有两个数据表,它们共有一个主键列,但结构不同,因为它们是从不同的表创建的。我想检查与A相比,数据表B缺少哪些行,目的是将缺少的行添加到数据库中 我已经研究过这样的问题,它们提供了很好的答案,但是数据表通常被假定为相同的 既然我想得到一个要插入的新行列表,那么有没有什么方法可以在不遍历行和检查PKs的情况下实现这一点?如果我没有弄错的话,Merge将保留旧的行,我不想重新提交到数据库 两个表都只有几十行,最多几百行。一行一行地做这件事对计算的影响是可以忽略不计的吗 编辑:这两个源表位于不同的数据

我有两个数据表,它们共有一个主键列,但结构不同,因为它们是从不同的表创建的。我想检查与A相比,数据表B缺少哪些行,目的是将缺少的行添加到数据库中

我已经研究过这样的问题,它们提供了很好的答案,但是数据表通常被假定为相同的

既然我想得到一个要插入的新行列表,那么有没有什么方法可以在不遍历行和检查PKs的情况下实现这一点?如果我没有弄错的话,
Merge
将保留旧的行,我不想重新提交到数据库

两个表都只有几十行,最多几百行。一行一行地做这件事对计算的影响是可以忽略不计的吗

编辑:这两个源表位于不同的数据库/服务器上,因此我无法轻松地进行编辑
SQL中的比较。无论如何,我还是希望消费应用程序这样做,因为我可能会在完成之前添加更多的行处理。

在SQL中这样做不是更容易/更快吗,例如:

SELECT col1 FROM table1
MINUS
SELECT col1 FROM table2

我希望我已经正确理解了您的需求,但是使用Linq怎么样?将两个表的键加载到2个
IEnumerable
对象中,例如(假设键的类型为
int

IEnumerable键1、键2;
//代码将密钥加载到这些集合中
//要查找键1中键2缺少的键,请执行以下操作:
var missingKeys=keys1.Where(k1=>!keys2.Any(k2=>k2==k1));

HTH

我只能回答,并建议迭代。当一条记录的列值可能不存在于第一个数据表中时,我想不出一个函数会从另一个数据表向一个数据表中只添加n行。是的,但这两个表实际上位于不同的数据库中,并且可能位于不同的服务器上:)谢谢-我真的应该自己想到这一点,大多数桌子结构都是不同的,这一事实让我心烦意乱:)
IEnumerable<int> keys1, keys2;
// code to load the keys into these collections
// to find the keys in keys1 that are missing from keys2:
var missingKeys = keys1.Where(k1 => !keys2.Any(k2 => k2 == k1));