【发布时间】:2018-07-25 13:51:41
【问题描述】:
我试图根据多列找出两个数据表之间的差异。我已经设法根据一列(如下)做到了:
//return all rows in dt1 but not in dt2 based on column name
public DataTable GetTableDiff(DataTable dt1, DataTable dt2, string sColumn)
{
DataTable dtDiff = new DataTable();
try
{
var diff = from r1 in dt1.AsEnumerable()
join r2 in dt2.AsEnumerable()
on r1.Field<string>(sColumn).Trim().ToLower()
equals r2.Field<string>(sColumn).Trim().ToLower() into g
where !g.Any() // get only rows which do not have joined rows from dt2
select r1;
dtDiff = diff.CopyToDataTable();
}
catch (Exception ex)
{
}
return dtDiff;
}
【问题讨论】:
-
您可以创建一个 IComparable 并将其与 Linq 除外。
-
应该是 IEqualityComparer。