110,538
社区成员
发帖
与我相关
我的任务
分享
public class RowEquality : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
return x.Field<string>("ID") == y.Field<string>("ID");
}
public int GetHashCode(DataRow obj)
{
return obj == null ? 0 : obj.ToString().GetHashCode();
}
public static bool PropertyEqual(DataRow TTARow, DataRow DTERow)
{
return TTARow.Field<string>("COUNT") == DTERow.Field<string>("COUNT")
&& TTARow.Field<string>("STATE") == DTERow.Field<string>("STATE");
}
}
//取差集
IEnumerable<DataRow> Missing = Table1.AsEnumerable().Except(Table2.AsEnumerable(), new RowEquality());
//取交集
IEnumerable<DataRow> Intersect = Table1.AsEnumerable().Except(Table2.AsEnumerable(), new RowEquality());
if(交集不空)
{
//遍历交集行
Intersect.ToList().ForEach(row =>
{
//伪代码,自己实现
var row1 = Table1.Select(id = row.id).FirstOrDefault();
var row2 = Table2.Select(id = row.id).FirstOrDefault();
if(!RowEquality.PropertyEqual(row1, row2))
{
//属性不同
DoSomething...
}
}
}