有什么方法可以减去两个数据表,以使第一个数据表的行不在第二个数据表中?
我已经尝试过.Except()方法,如下所示,但它对我不起作用。
dt1.AsEnumerable().Except(dt2.AsEnumerable()).CopyToDataTable();
我认为我在使用此方法时有错误,但是我找不到?
最佳答案
您可以使用IEquailtyComparer创建自己的比较器
public class CustomDataRowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
for (int i = 0; i < x.Table.Columns.Count; i++)
{
if (x[i].ToString() != y[i].ToString())
{
return false;
}
}
return true;
}
public int GetHashCode(DataRow obj)
{
return obj.ToString().GetHashCode();
}
}
以后您可以这样称呼它:
CustomDataRowComparer myDRComparer = new CustomDataRowComparer();
var result2 = dt1.AsEnumerable().Except(dt2.AsEnumerable(),myDRComparer).CopyToDataTable();
关于c# - 如何用linq减去两个数据表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12136754/