两个数据表的交集使用自定义数据比较器返回零行
本文关键字:数据 自定义 比较器 零行 返回 两个 数据表 | 更新日期: 2023-09-27 17:57:56
我想获得两个超过45000行的数据表之间的所有公共行(包括重复行)。
但是,我想跳过比较范围之外的"第2列"answers"第6列之后的所有列"。但我并没有得到任何行作为交集的结果。有人能告诉我哪里做错了吗?
这是我写的代码:
CustomDataRowComparer myDRComparer = new CustomDataRowComparer();
var commonData = outputTable.AsEnumerable().Intersect(prevTable.AsEnumerable(), myDRComparer).CopyToDataTable();
public class CustomDataRowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
for (int i = 0; i < 7; i++)
{
if (i !=1) // Don't want to consider this column for comparison
{
if (x[i].ToString() != y[i].ToString())
{
return false;
}
}
}
return true;
}
public int GetHashCode(DataRow obj)
{
return obj.ToString().GetHashCode();
}
这是完整的代码
public class CustomDataRowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
return x.Equals(y);
}
public int GetHashCode(DataRow obj)
{
return string.Join("^", obj.ItemArray.Select((x, i) => i == 1 ? "" : x.ToString()).ToArray()).GetHashCode();
}
}