C# 比较两个具有相同架构和N个列的Datatable

C# 比较两个具有相同架构和N个列的Datatable,c#,datatable,dataset,iequalitycomparer,C#,Datatable,Dataset,Iequalitycomparer,我有两个数据表,都有相同的列数和列名。我需要比较不同行的列数和列名。这意味着即使一个单元格与行不匹配,也应该打印。我尝试了 table1.Merge(table2); DataTable modified = table2.GetChanges(); 但这是返回空值 何处为 IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable()); IEnumerable added=tabl

我有两个数据表,都有相同的列数和列名。我需要比较不同行的列数和列名。这意味着即使一个单元格与行不匹配,也应该打印。我尝试了

table1.Merge(table2);
DataTable modified = table2.GetChanges();
但这是返回空值

何处为

IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable());
IEnumerable added=table1.AsEnumerable()。除了(table2.AsEnumerable());
即使表1中的某些单元格的值与表2中的值不同,这也只是返回表1的值

有人能帮我做这个比较吗?我提到的各种网站,说明书上说是比较一行中的每一列,但由于我没有任何列,我不能这样做。我需要一种更聪明的比较方法,这将是有效的


提前感谢

您尝试过使用合并吗

IEnumerable added=table1.AsEnumerable()。除了(table2.AsEnumerable());
应改为

IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
IEnumerable added=table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);

因为数据行不知道如何单独比较它们自己。您也可以提供自己的相等委托,而不是DataRowComparer。如果需要,默认值。

那么您想获取不在两个表中的所有行吗?@mattm是的,我需要获取所有不匹配的行,然后找到哪个单元格或多个单元格是不匹配的原因。这正是我想要的。谢谢yo ginkner。
IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable());
IEnumerable<DataRow> added = table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);