Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从两个数据表中获取不匹配的值_C#_Datatable_Comparison - Fatal编程技术网

C# 从两个数据表中获取不匹配的值

C# 从两个数据表中获取不匹配的值,c#,datatable,comparison,C#,Datatable,Comparison,是否有直接的方法从两个数据表中获取不匹配的值。我有一个datatable返回Active Directory中的所有组,另一个datatable包含sharepoint列表中的所有组名。但是通过比较这两个数据表,我需要不匹配的值。如果可能的话,请帮助我 提前感谢。您可以使用来比较行 例如,要比较两个数据表的前几行: DataRow left = table1.Rows[0]; DataRow right = table2.Rows[0]; IEqualityComparer<DataRo

是否有直接的方法从两个数据表中获取不匹配的值。我有一个datatable返回Active Directory中的所有组,另一个datatable包含sharepoint列表中的所有组名。但是通过比较这两个数据表,我需要不匹配的值。如果可能的话,请帮助我

提前感谢。

您可以使用来比较行

例如,要比较两个数据表的前几行:

DataRow left = table1.Rows[0];
DataRow right = table2.Rows[0];

IEqualityComparer<DataRow> comparer = DataRowComparer.Default;
bool bEqual = comparer.Equals(left, right);
DataRow left=table1.行[0];
DataRow right=表2.行[0];
IEqualityComparer comparer=DataRowComparer.Default;
bool-bEqual=比较器.Equals(左、右);
您可以使用来比较行

例如,要比较两个数据表的前几行:

DataRow left = table1.Rows[0];
DataRow right = table2.Rows[0];

IEqualityComparer<DataRow> comparer = DataRowComparer.Default;
bool bEqual = comparer.Equals(left, right);
DataRow left=table1.行[0];
DataRow right=表2.行[0];
IEqualityComparer comparer=DataRowComparer.Default;
bool-bEqual=比较器.Equals(左、右);

您可以使用
。但
除外。(假设有
ID
列)

IEnumerable idsInDataTableA=dataTableA.AsEnumerable().Select(row=>(int)row[“ID]”);
IEnumerable idsInDataTableB=dataTableB.AsEnumerable().Select(行=>(int)行[“ID]”);
IEnumerable difference=idsInDataTableA.Except(idsInDataTableB);

您可以使用
。但
除外。(假设有
ID
列)

IEnumerable idsInDataTableA=dataTableA.AsEnumerable().Select(row=>(int)row[“ID]”);
IEnumerable idsInDataTableB=dataTableB.AsEnumerable().Select(行=>(int)行[“ID]”);
IEnumerable difference=idsInDataTableA.Except(idsInDataTableB);
我想要比较DataTable2中不存在的DataTable1

您可以使用Linq。非常有效的方法是或(as)使用集合:

var keyColRows = dt1.AsEnumerable()
    .Select(r => r.Field<int>("KeyColumn")
    .Except(dt2.AsEnumerable().Select(r2 => r2.Field<int>("KeyColumn"));

foreach(int inTable2Missing)
    Console.WriteLine(inTable2Missing);
在这里,您可以使用
rowsOnlyInDT1.CopyToDataTable
为表1中唯一/新的行创建一个新的
DataTable
,或者使用
foreach
枚举它们

我想要比较DataTable2中不存在的DataTable1

您可以使用Linq。非常有效的方法是或(as)使用集合:

var keyColRows = dt1.AsEnumerable()
    .Select(r => r.Field<int>("KeyColumn")
    .Except(dt2.AsEnumerable().Select(r2 => r2.Field<int>("KeyColumn"));

foreach(int inTable2Missing)
    Console.WriteLine(inTable2Missing);

在这里,您可以使用
rowsOnlyInDT1.CopyToDataTable
为表1中唯一/新的行创建一个新的
DataTable
,或者使用
foreach
枚举它们。

您希望DataTable2中不存在的所有DataTable1,DataTable2中不存在的所有DataTable2,还是两者都存在?哪些列确定重复项?您希望结果是什么,
DataRow
还是键列?@TimSchmelter:我想比较DataTable2中不存在的DataTable1,您希望DataTable2中不存在的所有DataTable1,DataTable2中不存在的所有DataTable2,还是两者都存在?哪些列确定重复项?您希望结果是什么,
DataRow
还是键列?@TimSchmelter:我希望比较DataTable2中不存在的DataTable1