C# 如何比较两个相同格式的数据表之间的差异?
我有两个数据表具有相同的列数。我必须检查新数据表中哪个名称具有不同的组或子组。(C# 如何比较两个相同格式的数据表之间的差异?,c#,linq,datatable,C#,Linq,Datatable,我有两个数据表具有相同的列数。我必须检查新数据表中哪个名称具有不同的组或子组。(使用Linq) var lstreult=(来自DataTableOLD.AsEnumerable()中的_old) 将_new加入到_old.Field(“代码”)上的DataTableNew.AsEnumerable()中 等于新字段(“代码”) 其中_旧.字段(“组”)!=_新.字段(“组”)|| _旧的.Field(“子组”)!=\u新的.Field(“子组”) 选择新的 { OLDCODE=_old.Fie
使用Linq
)
var lstreult=(来自DataTableOLD.AsEnumerable()中的_old)
将_new加入到_old.Field(“代码”)上的DataTableNew.AsEnumerable()中
等于新字段(“代码”)
其中_旧.字段(“组”)!=_新.字段(“组”)||
_旧的.Field(“子组”)!=\u新的.Field(“子组”)
选择新的
{
OLDCODE=_old.Field(“代码”),
OLDNAME=_old.Field(“NAME”),
OLDGROUP=_old.Field(“组”),
OLDSUBGROUP=_old.Field(“SUBGROUP”),
NEWCODE=_new.Field(“CODE”),
NEWNAME=_new.Field(“NAME”),
新组=_新字段(“组”),
NEWSUBGROUP=_新的.Field(“子组”)
}
);
var lstreult=(来自DataTableOLD.AsEnumerable()中的_old)
将_new加入到_old.Field(“代码”)上的DataTableNew.AsEnumerable()中
等于新字段(“代码”)
其中_旧.字段(“组”)!=_新.字段(“组”)||
_旧的.Field(“子组”)!=\u新的.Field(“子组”)
选择新的
{
OLDCODE=_old.Field(“代码”),
OLDNAME=_old.Field(“NAME”),
OLDGROUP=_old.Field(“组”),
OLDSUBGROUP=_old.Field(“SUBGROUP”),
NEWCODE=_new.Field(“CODE”),
NEWNAME=_new.Field(“NAME”),
新组=_新字段(“组”),
NEWSUBGROUP=_新的.Field(“子组”)
}
);
DataTableOLD
CODE NAME GROUP SUBGROUP
c1 AA GP1 SGP1
c2 BB GP1 SGP1
c3 CC GP1 SGP2
c4 DD GP1 SGP2
c5 EE GP2 SGP3
DataTableNEW
CODE NAME GROUP SUBGROUP
c1 AA GP1 SGP4
c2 BB GP1 SGP1
c3 CC GP3 SGP5
c4 DD GP1 SGP2
c6 FF GP2 SGP3
Resultant table (show only those where there is mismatch in either group or group and subgroup both)
OLDCODE OLDNAME OLDGROUP OLDSUBGROUP NEWCODE NEWNAME NEWGROUP NEWSUBGROUP
c1 AA GP1 SGP1 c1 AA GP1 SGP4
c3 CC GP1 SGP2 c3 CC GP3 SGP5
var lstResult = (from _old in DataTableOLD.AsEnumerable()
join _new in DataTableNew.AsEnumerable() on _old.Field<string>("CODE")
equals _new.Field<string>("CODE")
where _old.Field<string>("GROUP") != _new.Field<string>("GROUP") ||
_old.Field<string>("SUBGROUP") != _new.Field<string>("SUBGROUP")
select new
{
OLDCODE = _old.Field<string>("CODE"),
OLDNAME = _old.Field<string>("NAME"),
OLDGROUP = _old.Field<string>("GROUP"),
OLDSUBGROUP = _old.Field<string>("SUBGROUP"),
NEWCODE = _new.Field<string>("CODE"),
NEWNAME = _new.Field<string>("NAME"),
NEWGROUP = _new.Field<string>("GROUP"),
NEWSUBGROUP = _new.Field<string>("SUBGROUP")
}
);